Créer une application cliente basée sur RAG
Lorsque vous avez créé un index Recherche d’IA Azure pour vos données contextuelles, vous pouvez l’utiliser avec un modèle OpenAI. Pour ancrer les invites avec les données de votre index, le SDK Azure OpenAI prend en charge l’extension de la requête avec les détails de connexion de l’index.
L’exemple de code Python suivant montre comment implémenter ce modèle.
from openai import AzureOpenAI
# Get an Azure OpenAI chat client
chat_client = AzureOpenAI(
api_version = "2024-12-01-preview",
azure_endpoint = open_ai_endpoint,
api_key = open_ai_key
)
# Initialize prompt with system message
prompt = [
{"role": "system", "content": "You are a helpful AI assistant."}
]
# Add a user input message to the prompt
input_text = input("Enter a question: ")
prompt.append({"role": "user", "content": input_text})
# Additional parameters to apply RAG pattern using the AI Search index
rag_params = {
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": search_url,
"index_name": "index_name",
"authentication": {
"type": "api_key",
"key": search_key,
}
}
}
],
}
# Submit the prompt with the index information
response = chat_client.chat.completions.create(
model="<model_deployment_name>",
messages=prompt,
extra_body=rag_params
)
# Print the contextualized response
completion = response.choices[0].message.content
print(completion)
Dans cet exemple, la recherche sur l’index est basée sur des mots clés , en d’autres termes, la requête se compose du texte de l’invite utilisateur, qui est mis en correspondance avec du texte dans les documents indexés. Lorsque vous utilisez un index qui le prend en charge, une autre approche consiste à utiliser une requête basée sur des vecteurs dans laquelle l’index et la requête utilisent des vecteurs numériques pour représenter des jetons de texte. La recherche avec des vecteurs permet de faire correspondre en fonction de la similarité sémantique ainsi que des correspondances de texte littéral.
Pour utiliser une requête basée sur des vecteurs, vous pouvez modifier la spécification des détails de la source de données Recherche Azure AI pour inclure un modèle d’incorporation ; qui est ensuite utilisé pour vectoriser le texte de la requête.
rag_params = {
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": search_url,
"index_name": "index_name",
"authentication": {
"type": "api_key",
"key": search_key,
},
# Params for vector-based query
"query_type": "vector",
"embedding_dependency": {
"type": "deployment_name",
"deployment_name": "<embedding_model_deployment_name>",
},
}
}
],
}