Appearance
使用 Azure AI Search Python SDK 实现向量与混合搜索
解决企业级知识检索痛点:通过配置 Azure AI Search Python SDK,实现结合关键词与向量的混合搜索(Hybrid Search)和语义排序,显著提升 RAG 应用的检索精度。
为什么需要这个技能
在构建 AI 问答系统(RAG)时,简单的关键词匹配无法处理语义相近但措辞不同的查询,而纯向量搜索在处理特定专有名词或 ID 时精度不足。
Azure AI Search 提供了强大的混合检索能力。通过 azure-search-documents SDK,开发者可以快速定义包含向量字段的索引,利用 HNSW 算法实现高效的近邻搜索,并结合语义排序(Semantic Ranking)对结果进行二次精排,确保用户获取最相关的信息。
适用场景
- 企业知识库:需要对大量文档进行全文检索和语义搜索。
- 智能问答系统:作为 LLM 的检索层,提供高质量的上下文片段。
- 自动化数据管道:使用 Indexer 自动从 Blob 存储等数据源抽取、处理并索引文档。
- 复杂过滤场景:在进行语义搜索的同时,需要通过属性(如分类、日期)进行硬过滤。
核心工作流
- 环境准备与鉴权:安装 SDK 并配置端点、API Key 或使用更安全的
DefaultAzureCredential。 - 定义索引结构:创建
SearchIndex,配置SearchField(包括用于向量存储的Collection(Edm.Single)类型)以及向量搜索配置文件(Vector Search Profile)。 - 数据导入:使用
SearchClient上传文档,或通过SearchIndexerClient配置数据源和技能集(Skillsets)实现自动化索引。 - 执行检索:
- 关键词搜索:通过
search_text进行传统检索。 - 向量搜索:使用
VectorizedQuery传入 Embedding 向量。 - 混合搜索:同时提供文本和向量查询,并开启
query_type="semantic"以激活语义排序。
- 关键词搜索:通过
- 结果处理:解析返回的得分及语义标明(Captions),提取最关键的答案片段。
核心代码实现
安装与初始化
bash
pip install azure-search-documents azure-identitypython
from azure.search.documents import SearchClient
from azure.identity import DefaultAzureCredential
client = SearchClient(
endpoint=os.environ["AZURE_SEARCH_ENDPOINT"],
index_name=os.environ["AZURE_SEARCH_INDEX_NAME"],
credential=DefaultAzureCredential()
)执行混合搜索
python
from azure.search.documents.models import VectorizedQuery
# 假设 query_vector 已通过 embedding 模型生成
results = client.search(
search_text="如何配置 Azure AI Search",
vector_queries=[VectorizedQuery(vector=query_vector, k_nearest_neighbors=5, fields="content_vector")],
query_type="semantic",
semantic_configuration_name="my-semantic-config",
top=10
)下载和安装
下载 azure-search-documents-py 中文版 Skill ZIP
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐