使用 Azure AI Search Retriever 实现高效的信息检索
Azure AI Search(前称为 Azure Cognitive Search)是微软提供的云搜索服务,支持大规模的向量、关键字和混合查询信息检索。Azure AI Search Retriever 是一个集成模块,支持根据非结构化查询返回文档,并基于 2023-11-01 稳定版 REST API,支持向量索引和查询功能。本指南将帮助您快速入门使用 Azure AI Search Retriever。
核心原理解析
Azure AI Search Retriever 通过集成 Microsoft 的云搜索服务,允许开发者利用其基础设施、API 和工具进行快速信息检索。通过设置索引和使用 API 密钥,我们可以高效地从大量文档中检索相关信息。
代码实现演示
环境变量设置
首先,您需要设置 Azure 搜索服务、索引名称和 API 密钥。这些信息可以直接通过环境变量配置:
import os
# 设置 Azure 搜索服务相关信息
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>"
安装依赖
确保安装必要的 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
实例化检索器
下面是如何实例化 AzureAISearchRetriever 的示例代码:
from langchain_community.retrievers import AzureAISearchRetriever
# 实例化检索器
retriever = AzureAISearchRetriever(
content_key="content", top_k=1, index_name="langchain-vector-demo"
)
使用检索器
一旦配置完成,您可以使用以下代码来检索相关文档:
# 调用检索器进行查询
documents = retriever.invoke("here is my unstructured query string")
示例使用场景
以下是一个使用示例,展示了如何使用 Azure AI Search Retriever 加载数据并进行查询:
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter
from langchain_community.vectorstores import AzureSearch
from langchain_openai import AzureOpenAIEmbeddings
# 配置 Azure OpenAI 嵌入模型
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()
text_splitter = CharacterTextSplitter(chunk_size=400, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# 添加文档到向量存储
vector_store.add_documents(documents=docs)
# 创建检索器并查询
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)
应用场景分析
Azure AI Search Retriever 非常适合大型文档集的快速索引和查询。在企业知识库、法律文档分析、学术研究等场景下,能够极大提高信息检索的效率和准确性。
实践建议
- 选择合适的索引配置:根据数据的特点,选择适合的向量和关键字索引。
- 优化 API 调用:使用批量查询和缓存技术以提升性能。
- 安全管理 API 密钥:确保密钥安全,不泄漏到公共代码库中。
如果遇到问题欢迎在评论区交流。
—END—