Skip to content

使用 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 存储等数据源抽取、处理并索引文档。
  • 复杂过滤场景:在进行语义搜索的同时,需要通过属性(如分类、日期)进行硬过滤。

核心工作流

  1. 环境准备与鉴权:安装 SDK 并配置端点、API Key 或使用更安全的 DefaultAzureCredential
  2. 定义索引结构:创建 SearchIndex,配置 SearchField(包括用于向量存储的 Collection(Edm.Single) 类型)以及向量搜索配置文件(Vector Search Profile)。
  3. 数据导入:使用 SearchClient 上传文档,或通过 SearchIndexerClient 配置数据源和技能集(Skillsets)实现自动化索引。
  4. 执行检索
    • 关键词搜索:通过 search_text 进行传统检索。
    • 向量搜索:使用 VectorizedQuery 传入 Embedding 向量。
    • 混合搜索:同时提供文本和向量查询,并开启 query_type="semantic" 以激活语义排序。
  5. 结果处理:解析返回的得分及语义标明(Captions),提取最关键的答案片段。

核心代码实现

安装与初始化

bash
pip install azure-search-documents azure-identity
python
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

你可能还需要

暂无推荐