**探索Azure AI Search Retriever:云端智能搜索的新纪元**

87 阅读2分钟

引言

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,您需要:

  1. Azure AI Search服务:可以通过Azure试用免费创建。
  2. 向量索引:通过向量存储模块或REST API创建。
  3. 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_namecontent_keytop_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?")

常见问题和解决方案

  1. 连接问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,以提高访问稳定性。

  2. API版本不匹配:确保使用支持向量的最新API版本。

总结和进一步学习资源

Azure AI Search Retriever为开发者提供强大的非结构化信息检索能力。通过合适的设置和工具,用户可以获取更精准的搜索结果。

进一步学习资源

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---