langchain/templates/rag-elasticsearch
2023-10-26 19:44:30 -07:00
..
data Templates (#12294) 2023-10-25 18:47:42 -07:00
rag_elasticsearch Format Templates (#12396) 2023-10-26 19:44:30 -07:00
ingest.py Format Templates (#12396) 2023-10-26 19:44:30 -07:00
LICENSE Templates (#12294) 2023-10-25 18:47:42 -07:00
main.py Format Templates (#12396) 2023-10-26 19:44:30 -07:00
poetry.lock Templates (#12294) 2023-10-25 18:47:42 -07:00
pyproject.toml Templates (#12294) 2023-10-25 18:47:42 -07:00
README.md Templates (#12294) 2023-10-25 18:47:42 -07:00

Elasticsearch RAG Example

Using Langserve and ElasticSearch to build a RAG search example for answering questions on workplace documents.

Relies on sentence transformer MiniLM-L6-v2 for embedding passages and questions.

Running Elasticsearch

There are a number of ways to run Elasticsearch.

Elastic Cloud

Create a free trial account on Elastic Cloud.

Once you have created an account, you can create a deployment. With a deployment, you can use these environment variables to connect to your Elasticsearch instance:

export ELASTIC_CLOUD_ID = <ClOUD_ID>
export ELASTIC_USERNAME = <ClOUD_USERNAME>
export ELASTIC_PASSWORD = <ClOUD_PASSWORD>

Docker

For local development, you can use Docker:

docker run -p 9200:9200 \
  -e "discovery.type=single-node" \
  -e "xpack.security.enabled=false" \
  -e "xpack.security.http.ssl.enabled=false" \
  -e "xpack.license.self_generated.type=trial" \
  docker.elastic.co/elasticsearch/elasticsearch:8.10.0

This will run Elasticsearch on port 9200. You can then check that it is running by visiting http://localhost:9200.

With a deployment, you can use these environment variables to connect to your Elasticsearch instance:

export ES_URL = "http://localhost:9200"

Documents

To load fictional workplace documents, run the following command from the root of this repository:

python ./data/load_documents.py

However, you can choose from a large number of document loaders here.

Installation

# from inside your LangServe instance
poe add rag-elasticsearch