Skip to content

RAG Server is a knowledge management module in OpsPilot, which is responsible for knowledge indexing and retrieval.

Elasticsearch Document Index

LangServe API

python
remote_indexer = RemoteRunnable(RAG_SERVER_URL)

knowledge_docs=[]  #here is a Document list
remote_indexer.invoke(
            {
                "elasticsearch_url": ELASTICSEARCH_URL,
                "elasticsearch_password": ELASTICSEARCH_PASSWORD,
                "embed_model_address": "",
                "index_name": index_name,
                "index_mode": "overwrite",
                "docs": knowledge_docs,
            }
        )

Rest API

Request

POST: /elasticsearch_index/invoke

{
  "input":{
    "elasticsearch_url":"",
    "elasticsearch_password":"",
    "embed_model_address":"",
    "index_name":"",
    "index_mode":"",
    "chunk_size":100,
    "max_chunk_bytes":1000000,
    "docs":[
      {
        "id":"",
        "metadata":{
          "knowledge_type":"",
          "knowledge_id":1,
          "knowledge_title":"",
          "knowledge_folder_id":1,
          #custom metadata
        },
        "page_content":""
      }
    ]
  }
}
paramdesc
elasticsearch_urlElasticSearch URL
elasticsearch_passwordElasticSearch password
embed_model_addressEmbedding model address ,for vector search
index_nameElasticSearch index name
index_modeIndex mode,overwrite or append
chunk_sizeChunk size for indexing
max_chunk_bytesMax chunk bytes for indexing
docsDocuments to index

Response

{
  "output": true
}

Delete Elasticsearch Index

some times we need to delete hole index or some documents in the index

LangServe API

python
remote_indexer = RemoteRunnable(RAG_SERVER_URL)

result=remote_indexer.invoke(
            {
                "elasticsearch_url": ELASTICSEARCH_URL,
                "elasticsearch_password": ELASTICSEARCH_PASSWORD,
                "index_name": index_name,
                "mode": "delete_index",
                "metadata_filter": {

                },
            }
        )

Rest API

Request

POST: /elasticsearch_delete/invoke

{
    "input":{
        "elasticsearch_url":"",
        "elasticsearch_password":"",
        "index_name":"",
        "mode":"delete_index"
        "metadata_filter":{}
    }
}
paramdesc
elasticsearch_urlElasticSearch URL
elasticsearch_passwordElasticSearch password
index_nameElasticSearch index name
modedelete mode,delete_index or delete_docs
metadata_filterFilter document for metadata

Elasticsearch RAG

this api is used to retrieve the knowledge from the Elastic Search

LangServe API

python
remote_indexer = RemoteRunnable(RAG_SERVER_URL)

result = remote_indexer.invoke({
                "elasticsearch_url": ELASTICSEARCH_URL,
                "elasticsearch_password": ELASTICSEARCH_PASSWORD,
                "embed_model_address": embed_model_address,
                "index_name": "",
                "search_query": query,
                "metadata_filter": {},
                "text_search_weight": 0.9,
                "rag_k": 10,
                "rag_num_candidates": 1000,
                "vector_search_weight": 0.1,
                "enable_rerank": false,
                "rerank_model_address": rerank_model_address,
                "rerank_top_k": 5,
                "enable_hyde_enhance":false,
                "hyde_enhance_base_url":"",
                "hyde_enhance_api_key":"",
                "hyde_enhance_temperature":0.7,
                "hyde_enhance_model":"",
                "hyde_prompt_key":"",
            })

Rest API

Request

POST: /elasticsearch_rag/invoke

{
  "input":{
    "elasticsearch_url":"",
    "elasticsearch_password":"",
    "embed_model_address":"",
    "enable_term_search": true,
    "enable_vector_search": true,
    "index_name":"",
    "search_query":"",
    "text_search_weight": 0.9,
    "rag_k": 5,
    "size": 5,
    "rag_num_candidates": 1000,
    "rag_num_passages": 5,
    "vector_search_weight": 0.1,
    "metadata_filter":{

    },
    "enable_rerank": false,
    "rerank_model_address":"",
    "rerank_top_k": 5,
    "enable_hyde_enhance":false,
    "hyde_enhance_base_url":"",
    "hyde_enhance_api_key":"",
    "hyde_enhance_temperature":0.7,
    "hyde_enhance_model":"",
    "hyde_prompt_key":"",

  }
}
paramdesc
elasticsearch_urlElasticSearch URL
elasticsearch_passwordElasticSearch password
embed_model_addressEmbedding model address ,for vector search
enable_term_searchEnable ElasticSearch full text search
enable_vector_searchEnable ElasticSearch vector search
index_nameRAG ElasticSearch index name
search_querySearch query
text_search_weightWeight for full text search
rag_kNumber of top k documents to retrieve
sizeNumber of documents to retrieve
rag_num_candidatesNumber of candidates for elasticsearch knn
rag_num_passagesNumber of passages for knn
vector_search_weightWeight for vector search
metadata_filterFilter document for metadata
enable_rerankEnable rerank
rerank_model_addressRerank model address
rerank_top_kRerank top k
enable_hyde_enhanceEnable hyde enhance
hyde_enhance_base_urlHyde enhance base url
hyde_enhance_api_keyHyde enhance api key
hyde_enhance_temperatureHyde enhance temperature
hyde_enhance_modelHyde enhance model
hyde_prompt_keyHyde prompt key

Response

{
  "output":[
    {
      "id":"",
      "metadata":{
        "_index":"",
        "_id":"",
        "_score":"",
        "_source":{
            "metadata":{
                "knowledge_type":"",
                "knowledge_id":1,
                "knowledge_title":"",
                "knowledge_folder_id":1,
                #custom metadata
            },
            "vector":[]
        },
        "relevance_score":0.0  # only rerank mode will have this field
      },
      "page_content":"",
      "type":"Document"
    }
  ]
}

Network Retrieval

LangServe API

python
rag_server = RemoteRunnable(ONLINE_SEARCH_SERVER_URL)
online_search_result: List[Document] = rag_server.invoke(
                {
                    "query": user_message,
                }
            )

Rest API

Request

POST: /network_retrieval/invoke

{
  "input":{
    "query":""
  }
}
paramdesc
querySearch statements for networked queries

Response

{
  "output":[
    {
      "id":"",
      "metadata":{

      },
      "page_content":"",
      "type":"Document"
    }
  ]
}