.. | ||
data | ||
rag_elasticsearch | ||
ingest.py | ||
LICENSE | ||
main.py | ||
poetry.lock | ||
pyproject.toml | ||
README.md |
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