通过编程创建向量索引

您可以通过编程方式创建向量索引资产,从而高效地从存储在向量数据存储中的文档中检索文本片段。

您可以从不同类型的矢量数据存储中选择,用于索引您的接地文档。 有关向量存储的详细信息,包括向量化和搜索设置、支持的文档文件类型以及支持的编码器模型,请参阅向量索引设置

开始之前

  • 在您能够使用该API之前,您的管理员必须在创建向量索引资产时安装您想要使用的嵌入模型。
注:

您只能使用该 ms-marco-minilm-l-12-v2 模型对通过API创建的向量索引中的搜索结果进行重新排序。 您的管理员必须安装重新排序模型才能启用搜索结果重新排序功能。

  • 您必须在项目中拥有管理员编辑角色。

  • 您必须生成凭据才能通过 watsonx.ai 的API进行身份验证。 详情请参阅生成持有人令牌

或者,您也可以使用 watsonx.ai 用户界面的图形工具来创建矢量索引。 请参阅从用户界面创建向量索引

过程

您可以使用 watsonx.ai 的REST API在项目中创建和管理矢量索引资产。 详情请参阅 watsonx.ai API参考文档中的向量索引 - 事务性API部分

使用REST API创建矢量索引资产的高级步骤,对于每种类型的矢量数据存储而言基本相同。 关键差异在于向量索引资产请求主体中需包含的值,具体如下文流程所示:

  1. 将您的接地文件作为数据资产上传至项目中,并记录文件的资产ID。

    要获取文件的资产ID:

    1. 在项目的 “资产 ”选项卡中,选择 “数据 > 数据资产 ”资产类型。

    2. 点击您的接地文件资产名称。

    3. 该ID可从 URL 的. data-assets/后缀部分获取。 URL 的格式如下:

      https://<host-name>/projects/<project-id>/data-assets/<asset-id>
      
  2. 为您的矢量数据存储创建矢量索引资产。 REST API请求创建索引资产,并为存储在向量数据存储中的文档生成文本嵌入向量。 通过使用数据资产ID来引用文档,并重新排序矢量搜索结果。

    限制: 您无法调整通过API创建的向量索引资产的搜索结果和重新排序设置。
    内存向量存储

    以下示例 REST API 请求将在您的项目中创建一个向量索引资产,用于内存中向量存储:

    curl --location --request POST 'https://cpd-<namespace-name>.apps.<OCP-domain>/v1/transactional_vector_indexes?version=2026-01-05' \
      --header 'Authorization: Bearer ${TOKEN}' \
      --header 'Content-Type: application/json' \
      --data-raw '{
          "project_id": "4e34d515-c61f-4f18-92b4-758be78d0a58",
          "name": "transactional-flow-external-inmemory",
          "description": "Create vector index with API",
          "data_assets": [
              "df9ea6b4-2382-4ab7-aa54-d82e9432db34",
              "2ee31d21-f57b-4c76-b492-6cdb3c0d8389"
          ],
          "store": {
              "type": "memory"
          },
          "settings": {
              "chunk_size": 2000,
              "chunk_overlap": 200,
              "top_k": 3,
              "split_pdf_pages": true,
              "rerank": true,
              "embedding_model_id": "sentence-transformers/all-minilm-l6-v2"
          }
      }'
    
    Elasticsearch 向量存储器

    在使用连接ID创建向量索引之前,请先创建与 Elasticsearch 向量存储的连接。 有关详细信息,请参阅设置 Elasticsearch 向量存储库

    以下示例REST API请求将在您的项目中为 Elasticsearch 向量存储创建向量索引资产:

    curl --location --request POST 'https://cpd-<namespace-name>.apps.<OCP-domain>/v1/transactional_vector_indexes?version=2026-01-05' \
      --header 'Authorization: Bearer ${TOKEN}' \
      --header 'Content-Type: application/json' \
      --data '{
          "project_id": "4e34d515-c61f-4f18-92b4-758be78d0a58",
          "name": "transactional-flow-external-elastic",
          "description": "My first vector index",
          "data_assets": [
             "5aa17ada-fdf9-4453-82dd-cf9ea84ab569"
          ],
          "store": {
              "type": "elasticsearch",
              "connection_id": "697dbae3-13b1-4ca9-8b65-16248e2d2675",
              "index": "wx-newindex",
              "new_index": true,
              "database": "rag"
          },
          "settings": {
              "chunk_size": 2000,
              "chunk_overlap": 200,
              "top_k": 3,
              "split_pdf_pages": true,
              "rerank": true,
              "embedding_model_id": ".elser_model_2",
              "schema_fields": {
              "document_name": "metadata.document_name",
              "text": "text",
              "page_number": "metadata.page",
              "vector_query": "vector"
          }
      }'
    
    watsonx.data Milvus 向量存储器

    在使用连接标识创建向量索引之前,请先建立与 watsonx.data Milvus 向量存储库的连接。 有关详细信息,请参阅设置 watsonx.dataMilvus 向量存储库

    以下示例REST API请求将在您的项目中为 watsonx.dataMilvus 向量存储创建一个向量索引资产:

    curl --location --request POST 'https://cpd-<namespace-name>.apps.<OCP-domain>/v1/transactional_vector_indexes?version=2026-01-05' \
      --header 'Authorization: Bearer ${TOKEN}' \
      --header 'Content-Type: application/json' \
      --data '{
          "project_id": "4e34d515-c61f-4f18-92b4-758be78d0a58",
          "name": "transactional-flow-external-milvus-may29",
          "description": "My first vector index",
          "data_assets": [
              "09dcb221-e262-4bba-9c72-18be5e5fe9e8"
          ],
          "store": {
              "type": "watsonx.data",
              "connection_id": "a02785b4-aa31-4a54-8a12-52df08c56b38",
              "index": "wx_milvusindex",
              "new_index": true,
              "database": "default"
          },
          "settings": {
              "chunk_size": 2000,
              "chunk_overlap": 200,
              "top_k": 3,
              "split_pdf_pages": true,
              "rerank": true,
              "embedding_model_id": "sentence-transformers/all-minilm-l6-v2",
              "schema_fields": {
              "document_name": "document_name",
              "text": "text",
              "page_number": "page"
          }
      }'
    

    仅适用于外部向量存储: REST API响应返回向量索引资产ID以及 Python 笔记本资产ID,该笔记本用于启动作业运行,在外部向量存储中生成文本嵌入。 响应中还包含嵌入生成任务的ID。

  3. 您可以通过更新 Python 笔记本、向量化设置和数据资产来管理向量索引资产。

    运行以下示例 REST API 请求,以编辑矢量索引资产的矢量化设置:

    curl --location --request POST 'https://cpd-<namespace-name>.apps.<OCP-domain>/v1/transactional_vector_indexes/<vector-index-asset-id>' \
      --header 'Authorization: Bearer ${TOKEN}' \
      --header 'Content-Type: application/json' \
      --data-raw '{
          "settings": {
              "chunk_size": 2000,
              "chunk_overlap": 200,
              "top_k": 3,
              "split_pdf_pages": true,
              "rerank": false,
              "embedding_model_id": "ibm/granite-embedding-278m-multilingual",
              "schema_fields": {
                  "document_name": "document_name",
                  "text": "text",
                  "page_number": "page"
              }
          }
      }'
    

后续操作

现在,您可以使用存储文档集的向量索引资产,尝试检索增强生成(RAG)模式。 将提示逻辑保存到笔记本中,以便在生成式人工智能应用程序中使用。 详情请参阅《 保存您的工作和《检索增强生成》