openai elasticsearch rag
1.0.0
RAG (Retrieval-Augmented Generation) Application to offer Q&A on a long format text using OpenAI and ElasticSearch. Here we are
python -m venv venvsource venv/bin/activatepip install -r requirements.txtpython -m spacy download en_core_web_smbin/elasticsearch (or binelasticsearch.bat on Windows)curl -X GET "localhost:9200/" in terminalBefore running app, create .env file using .env-template and add OpenAI API Key and Elasticsearch credentials.
python run.pyApp will start on localhost on port 8081. Sanity check by running in terminal. It should return Hello message.
curl -X GET "localhost:8081"curl --location --request PUT 'http://localhost:9200/first-index'
--header 'Content-Type: application/json'
--data-raw '{
"mappings": {
"properties": {
"text": {
"type": "text"
},
"embedding": {
"type": "dense_vector",
"dims": 1536
}
}
}
}'If you want to delete the index for clean start, use the following command.
curl --location --request DELETE 'http://localhost:9200/first-index'To index data, use the following curl command. This command sends a POST request to the specified endpoint with a JSON
payload containing the text to be indexed and the name of the index.
Make sure you have the server running on localhost on port 8081.
curl --location --request POST 'localhost:8081/api/index'
--header 'Content-Type: application/json'
--data-raw '{
"text": "Ajeet is an engineer turned product entrepreneur with experience in AI, SaaS, HealthTech and EdTech. He is a technology enthusiast and loves to work on new technologies. He was a founding member of leading health-tech startups HealthKart and TATA 1mg in India. He was the founder of Joe Hukum, a chatbot platform which was acquired by Freshworks. After Freshworks, he founded Seekho.ai to solve for the skill gap in Indian higher education. Currently, he is on a break and is exploring GenAI to solve for the next meaningful problem. He is passionate about solving zero to one problems and building products that can impact millions of lives.",
"index_name": "first-index"
}'Example 1:
curl --location --request POST 'localhost:8081/api/query'
--header 'Content-Type: application/json'
--data-raw '{
"question": "Who is Ajeet?",
"index_name": "first-index"
}'Example 2:
curl --location --request POST 'localhost:8081/api/query'
--header 'Content-Type: application/json'
--data-raw '{
"question": "Joe Hukum was acquired by which company?",
"index_name": "first-index"
}'