核心功能
Azure AI Search 是 Azure 上的全托管检索服务:创建搜索服务后,用 azure-search-documents SDK 定义索引字段与向量配置并上传文档,即可做全文、向量与混合检索。它把倒排索引、向量索引与语义重排收进一套服务,代价是容量按定价层与搜索单位购买。
功能亮点
一索引多模
同一个索引里既有可全文检索的字段也有向量字段,可直接做混合检索。
算法可选
向量配置里声明 HNSW 或穷举 KNN 算法,再由 profile 绑定到具体字段。
集成向量化
配置 vectorizer 后由服务在索引和查询阶段生成向量,不必自己算嵌入。
免费层可试
Free 层每订阅每区域 1 个服务,含 3 个索引与 50 MB 存储。
适用场景
• 在 Azure 上做企业内部文档检索,一次查询同时用关键词和向量召回
• 为 RAG 应用建知识库,用索引器从 Blob 拉取文档并由技能集分块、向量化
• 电商站内搜索里用可过滤字段(类目、标签)约束向量检索的结果范围
安装配置
bash
开通服务: 1) 准备 Azure 订阅,在 Azure 门户中创建 Azure AI Search 服务(选择区域与定价层) 2) 记录服务终结点,形如 https://<服务名>.search.windows.net 3) 获取管理密钥(API key),或改用 Microsoft Entra ID 的无密钥认证 4) 创建索引:为向量字段设置 vector_search_dimensions 与 vector_search_profile_name, 并在 VectorSearch 中声明算法配置与 profile 安装客户端 SDK: pip install azure-search-documents
使用方法
python
创建带向量字段的索引:
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.models import VectorizedQuery
from azure.search.documents.indexes.models import (
SimpleField, SearchField, SearchFieldDataType, SearchableField,
SearchIndex, VectorSearch, VectorSearchProfile, HnswAlgorithmConfiguration
)
search_endpoint = "https://<服务名>.search.windows.net"
credential = AzureKeyCredential("<ADMIN_KEY>")
index_name = "vector-search-quickstart"
index_client = SearchIndexClient(endpoint=search_endpoint, credential=credential)
fields = [
SimpleField(name="HotelId", type=SearchFieldDataType.String, key=True, filterable=True),
SearchableField(name="HotelName", type=SearchFieldDataType.String, sortable=True),
SearchableField(name="Description", type=SearchFieldDataType.String),
SearchField(
name="DescriptionVector",
type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
searchable=True,
vector_search_dimensions=1536,
vector_search_profile_name="my-vector-profile"
),
]
vector_search = VectorSearch(
algorithms=[
HnswAlgorithmConfiguration(name="my-hnsw-vector-config-1", kind="hnsw")
],
profiles=[
VectorSearchProfile(name="my-vector-profile", algorithm_configuration_name="my-hnsw-vector-config-1")
]
)
index = SearchIndex(name=index_name, fields=fields, vector_search=vector_search)
result = index_client.create_or_update_index(index)
上传文档(documents 中每条含 DescriptionVector 向量):
search_client = SearchClient(
endpoint=search_endpoint,
index_name=index_name,
credential=credential
)
result = search_client.upload_documents(documents=documents)
for r in result:
print(f"Key: {r.key}, Succeeded: {r.succeeded}, ErrorMessage: {r.error_message}")
向量检索:
vector_query = VectorizedQuery(
vector=vector,
k_nearest_neighbors=5,
fields="DescriptionVector",
kind="vector"
)
results = search_client.search(
vector_queries=[vector_query],
select=["HotelId", "HotelName", "Description"],
top=5,
include_total_count=True
)关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标Azure AI Search
价格免费增值
开源否
上手难度进阶
相关工具
优点
- 全文、向量、混合检索与语义重排在同一服务内完成,不必再拼一套关键词引擎
- 索引器与技能集能从数据源拉取内容并自动分块、向量化,减少自建数据管道
- 与 Azure 订阅、网络与合规体系打通,可用 Microsoft Entra ID 免密钥认证
- 官方提供 .NET / Java / JavaScript / Python SDK 与 REST API
缺点
- Free 层每订阅每区域只有 1 个服务、3 个索引、50 MB 存储,且不提供 SLA
- Free 服务长期闲置可能被删除;其索引器单次执行时间限 1–3 分钟、每 180 秒才能调用一次
- 向量字段维度上限 4096,单次推送的文档或批次载荷上限 16 MB
- 更高的存储与向量配额在 Israel Central、Qatar Central、Spain Central、South India 等区域尚不可用