name: RAG using Semantic Kernel with Azure OpenAI and Azure Cosmos DB for MongoDB vCore description: A Python sample for implementing retrieval augmented generation using Azure Open AI to generate embeddings, Azure Cosmos DB for MongoDB vCore to perform vector search and semantic kernel. Deployed to Azure App service using Azure Developer CLI (azd). languages:
A Python sample for implementing retrieval augmented generation using Azure Open AI to generate embeddings, Azure Cosmos DB for MongoDB vCore to perform vector search and semantic kernel. Deployed to Azure App service using Azure Developer CLI (azd).
π₯ Click this image to watch the recorded reactor workshop
Create the following resources on Microsoft Azure:
text-embedding-ada-002
) See the guide here.gpt-35-turbo
)π Start here π rag-azure-openai-cosmosdb-notebook.ipynb
Test it inside codespaces π
To run the Quart application, follow these steps:
Download the project starter code locally
git clone https://github.com/john0isaac/rag-semantic-kernel-mongodb-vcore.git
cd rag-semantic-kernel-mongodb-vcore
Install, initialize and activate a virtualenv using:
pip install virtualenv
python -m virtualenv .venv
source .venv/bin/activate
Note - In Windows, the
.venv
does not have abin
directory. Therefore, you'd use the analogous command shown below:
source .venv/Scripts/activate
Install the dependencies:
pip install -r requirements-dev.txt
Run the notebook to generate the .env file and test out everything first
Install the app as an editable package:
pip install -e src
Execute the following command in your terminal to start the quart app
export QUART_APP=src.quartapp
export QUART_ENV=development
export QUART_DEBUG=true
quart run --reload
For Windows, use setx
command shown below:
setx QUART_APP src.quartapp
setx QUART_ENV development
setx QUART_DEBUG true
quart run --reload
Verify on the Browser
Navigate to project homepage http://127.0.0.1:5000/ or http://localhost:5000
Follow this guide π Build RAG Chat App using Azure Cosmos DB for MongoDB vCore and Azure OpenAI: Step-by-Step Guide
azd
DeploymentThis repository is set up for deployment on Azure App Service (w/Azure Cosmos DB for MongoDB vCore) using the configuration files in the infra
folder.
To deploy your own instance, follow these steps:
Sign up for a free Azure account
Install the Azure Dev CLI.
Login to your Azure account:
azd auth login
Initialize a new azd
environment:
azd init
It will prompt you to provide a name (like "quart-app") that will later be used in the name of the deployed resources.
Provision and deploy all the resources:
azd up
It will prompt you to login, pick a subscription, and provide a location (like "eastus"). Then it will provision the resources in your account and deploy the latest code. If you get an error with deployment, changing the location (like to "centralus") can help, as there may be availability constraints for some of the resources.
When azd has finished deploying, you'll see an endpoint URI in the command output. Visit that URI to browse the app! π
[!NOTE] If you make any changes to the app code, you can just run this command to redeploy it:
azd deploy
Open the Azure portal and sign in.
Navigate to your App Service page.
Select SSH from the left menu then, select Go.
In the SSH terminal, run python ./scripts/add_data.py
.
The Python scrips that adds the data is configured to accept any JSON file with your data but you need to specify the following parameters when you run it:
--file="./data/text-sample.json"
or -f "./data/text-sample.json"
--id-field=id
or -id id
--text-field=content
or -txt content
Description field: This is the name of the description field that cosmos will store along with the embeddings. --description-field=title
or -desc title
python ./scripts/add_data.py --file="./data/text-sample.json" --id-field=id --text-field=content --description-field=title
Add your JSON data to the data folder.
The workflow will trigger automatically and push your data to the Azure App service.
Open the Azure portal and sign in.
Navigate to your App Service page.
Select SSH from the left menu then, select Go.
In the SSH terminal, run the following command with the changed values to suit your data:
python ./scripts/add_data.py --file="./data/text-sample.json" --id-field=id --text-field=content --description-field=title
azd
DeploymentAdd your JSON data to the data folder.
Run azd deploy
to upload the data to Azure App Service.
Open the Azure portal and sign in.
Navigate to your App Service page.
Select SSH from the left menu then, select Go.
In the SSH terminal, run the following command with the changed values to suit your data:
python ./scripts/add_data.py --file="./data/text-sample.json" --id-field=id --text-field=content --description-field=title