使用 Azure AI Search Retriever 实现高效的信息检索

使用 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—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值