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

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

特权要求

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

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

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

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

请参阅 Unity Catalog 特权和安全对象

添加矢量搜索索引资源

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

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

注释

矢量搜索索引是 Unity Catalog 表,类型为 TABLE_ONLINE_VECTOR_INDEX_REPLICATABLE_ONLINE_VECTOR_INDEX_DIRECT。 选择矢量搜索索引时,您需要选择一个专门配置的表格,该表格支持语义搜索操作。

环境变量

在使用矢量搜索索引资源部署应用程序时,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 vector search index name
index_name = os.getenv("VECTOR_SEARCH_INDEX")

# Initialize workspace client
w = WorkspaceClient()

# Query the vector 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}")

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

删除矢量搜索索引资源

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

最佳做法

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

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