引言
Azure AI Search(前身为Azure Cognitive Search)是微软提供的云搜索服务,支持大规模的向量、关键词和混合查询。本文将介绍Azure AI Search Retriever,这是一个集成模块,能够从非结构化查询中返回文档。我们将探讨其功能、使用方法以及相关的代码示例。
主要内容
什么是Azure AI Search Retriever?
Azure AI Search Retriever是基于BaseRetriever类的模块,支持最新的2023-11-01稳定API版Azure AI Search。它能进行向量索引和查询,并逐步替代即将弃用的Azure Cognitive Search Retriever。
集成详情
- 云端提供:支持云端应用
- 包:通过
langchain_community包使用
设置
要使用Azure AI Search Retriever,您需要:
- Azure AI Search服务:可以通过Azure试用免费创建。
- 向量索引:通过向量存储模块或REST 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>"
安装
使用以下命令安装相关依赖:
%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
实例化
通过指定index_name、content_key和top_k来创建Azure AI Search Retriever实例。
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("../../how_to/state_of_the_union.txt", encoding="utf-8")
documents = loader.load()
from langchain_text_splitters import CharacterTextSplitter
text_splitter = CharacterTextSplitter(chunk_size=400, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
vector_store.add_documents(documents=docs)
retriever.invoke("does the president have a plan for covid-19?")
常见问题和解决方案
-
连接问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,以提高访问稳定性。
-
API版本不匹配:确保使用支持向量的最新API版本。
总结和进一步学习资源
Azure AI Search Retriever为开发者提供强大的非结构化信息检索能力。通过合适的设置和工具,用户可以获取更精准的搜索结果。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---