将 AI 搜索索引资源添加到 Databricks 应用

AI 搜索索引 添加为 Databricks Apps 资源,以便在应用程序中启用语义搜索和基于相似性的检索。 AI 搜索索引存储和查询高维矢量嵌入,为用例提供支持,例如检索扩充生成(RAG)、语义搜索和建议系统。

Databricks AI 搜索以前称为 Databricks 矢量搜索。

特权要求

若要访问 AI 搜索索引,应用的服务主体必须具有 USE CATALOG 父目录、 USE SCHEMA 父架构特权和 SELECT 索引特权。 添加索引资源时,Azure Databricks会自动向应用的服务主体授予这些权限。

要使此自动授予成功,对于每个权限,以下条件之一必须为真:

  • 对于 USE CATALOG 所有帐户用户都对目录具有 USE CATALOG 权限,或者你对目录具有 MANAGE 特权。
  • 对于 USE SCHEMA 所有帐户用户都对架构具有 USE SCHEMA 权限,或者你对架构拥有 MANAGE 权限。
  • 对于 SELECT 所有帐户用户都对索引具有 SELECT 权限,或者你对索引具有 MANAGE 特权。

有关使用这些权限查询 AI 搜索索引的详细信息,请参阅 如何查询 AI 搜索索引

请参阅 Unity Catalog 权限参考

添加 AI 搜索索引资源

在将 AI 搜索索引添加为资源之前,请查看 应用资源先决条件

  1. 在创建或编辑应用时,在 “应用资源 ”部分中,单击“ + 添加资源>矢量搜索索引”。
  2. 从工作区中的可用索引中选择 AI 搜索索引。 索引必须已存在于 Unity 目录中。
  3. 选择应用的权限级别:
    • 可以选择: 授予应用查询 AI 搜索索引以查找相似性搜索的权限。 对应于 SELECT 特权。
  4. (可选)指定自定义资源键,即在应用配置中引用索引的方式。 默认键为 vector-search-index.

注释

AI 搜索索引是类型为 TABLE_ONLINE_VECTOR_INDEX_REPLICATABLE_ONLINE_VECTOR_INDEX_DIRECT 的 Unity Catalog 表。 选择 AI 搜索索引时,会选择支持语义搜索操作的专门配置的表。

环境变量

使用 AI Search 索引资源部署应用时,Azure Databricks 会通过环境变量提供完整的三级名称,你可以使用 valueFrom 字段来引用该名称。

示例配置

env:
  - name: VECTOR_SEARCH_INDEX
    valueFrom: vector-search-index # Use your custom resource key if different

在应用程序中使用索引:

import os
from databricks.sdk import WorkspaceClient

# Access the AI Search index name
index_name = os.getenv("VECTOR_SEARCH_INDEX")

# Initialize workspace client
w = WorkspaceClient()

# Query the AI Search index
results = w.vector_search_indexes.query_index(
    index_name=index_name,
    query_text="What is machine learning?",
    num_results=10
)

# Process results
for result in results.manifest.columns:
    print(f"Result: {result}")

有关详细信息,请参阅 使用环境变量访问资源

删除 AI 搜索索引资源

从应用中删除 AI 搜索索引资源时,应用的服务主体将失去对索引的访问权限。 索引本身保持不变,并继续可供具有适当权限的其他用户和应用程序使用。

最佳做法

使用 AI 搜索索引资源时,请考虑以下事项:

  • 如果索引引用其他表,请确保应用的服务主体有权访问基础数据源。
  • 监视查询性能,并在响应时间下降时调整索引配置或嵌入模型。
  • 请考虑索引刷新计划,以保持嵌入与源数据同步。
  • 根据嵌入模型使用适当的相似性指标(余弦、euclidean、点积)。