ChatWithKnowledgeBase - 基于知识库的聊天API

更新时间:

通过结合知识库和大模型,提供智能问答服务。

接口说明

该 API 允许用户通过指定的知识库集合与大模型进行交互,以获取基于知识库内容的答案。支持配置多种参数来定制化请求,包括但不限于数据库实例 ID、知识检索参数、模型推理参数等。此外,还提供了默认的系统提示词模板,并允许用户自定义系统提示。

  • DBInstanceId:必填项,用于指定数据库实例 ID。
  • KnowledgeParams:可选项,包含知识检索相关的参数,如检索内容、合并策略等。
  • ModelParams:必填项,包含模型推理相关的参数,如消息列表、使用的模型名称等。
  • PromptTemplate:可选项,用于自定义系统提示词模板。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用前面加 * 表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
gpdb:ChatWithKnowledgeBasecreate
*DBInstance
acs:gpdb:{#regionId}:{#accountId}:dbinstance/{#DBInstanceId}

请求参数

名称类型必填描述示例值
DBInstanceIdstring

实例 ID。

说明 您可以调用 DescribeDBInstances 接口查看目标地域下所有实例的详情,包括实例 ID。
gp-xxxxxxxxx
RegionIdstring

实例所在的地域 ID

cn-hangzhou
KnowledgeParamsobject

知识检索参数对象,不指定时,仅 chat。

MergeMethodstring

多知识库合并的方法,默认为 RRF,可选项:

  • RRF
  • Weight
"RRF"
MergeMethodArgsobject

多知识库融合的参数。

Rrfobject

指定 MergeMethod 为 RRF 时,可配置的参数。

Klong

指定计算分数的算法的 1/(k+rank_i)中的 k 常数,范围大于 1 的正整数。

60
Weightobject

指定 MergeMethod 为 Weight 时,可配置的参数。

Weightsarray

各个 SourceCollection 的权重数组。

double

各个 SourceCollection 的权重。

0.01
RerankFactordouble

重排因子。当该值不为空时,会对向量检索结果再做一次重排。取值范围:1<RerankFactor<=5。

说明
  • 当文档切分稀疏时,重排效率慢。
  • 建议重排个数(TopK*Factor(向上取整))不超过 50。
  • 1.0001
    SourceCollectionarray<object>

    知识库

    object
    Collectionstring

    待召回的集合名。

    adbpg_document_collection
    Namespacestring

    命名空间,默认为 public。

    说明 您可以通过 CreateNamespace 接口创建,通过 ListNamespaces 接口查看列表。
    dukang
    NamespacePasswordstring

    命名空间对应的密码。

    说明 本值为 CreateNamespace 接口指定。
    namespacePasswd
    QueryParamsobject

    与该知识库检索相关的参数。

    Filterstring

    要更新的数据的过滤条件,格式为 SQL 的 WHERE 格式。

    id = 'llm-t87l87fxuhn56woc_8anu8j2d3f_file_e74635e2cc314e838543e724f6b3b1f2_10658020'
    GraphEnhanceboolean

    是否开启知识图谱增强。默认值:false。

    false
    GraphSearchArgsobject

    返回 top 数量的实体和关系边。默认值:60。

    GraphTopKlong

    返回 top 数量的实体和关系边。默认值:60。

    60
    HybridSearchstring

    双路召回算法,默认为空(即直接将向量和全文的分数比较并排序)。

    可选值:

    • RRF:倒数排序融合(Reciprocal rank fusion),有一个参数 k 控制融合效果,详见 HybridSearchArgs 配置;
    • Weight:比重排序,采用一个参数 alpha 控制向量和全文的分数比重,然后再排序,参数详见 HybridSearchArgs 配置;
    • Cascaded:先全文检索再在其基础上进行向量检索;
    RRF
    HybridSearchArgsobject

    双路召回的算法参数。目前支持 RRF 和 Weight 两种:

    • RRF:指定计算分数的算法的1/(k+rank_i)中的 k 常数,范围大于 1 的正整数,格式为:
    { 
       "RRF": {
        "k": 60
       }
    }
    
    • Weight: 计算公式alpha * vector_score + (1-alpha) * text_score,参数 alpha 表示向量和全文的检索分数比重,范围为 0~1,其中 0 表示只全文,1 表示只向量:
    { 
       "Weight": {
        "alpha": 0.5
       }
    }
    
    any
    Metricsstring

    向量构建索引时的方法。取值说明:

    • l2:欧氏距离。
    • ip:点积(内积)距离。
    • cosine:余弦相似度。
    cosine
    RecallWindowarray

    召回窗口。当该值不为空时,增加返回检索结果的上下文。格式为 2 个元素的数组:List<A, B>,其中-10<=A<=0,0<=B<=10。

    说明
  • 推荐当文档切分过碎、检索可能会丢失上下文信息时使用该参数。
  • 重排优先窗口化,即先 rerank,再窗口化处理。
  • long

    召回窗口。当该值不为空时,增加返回检索结果的上下文。格式为 2 个元素的数组:List<A, B>,其中-10<=A<=0,0<=B<=10。

    说明
  • 推荐当文档切分过碎、检索可能会丢失上下文信息时使用该参数。
  • 重排优先窗口化,即先 rerank,再窗口化处理。
  • [-1,1]
    RerankFactordouble

    重排因子。当该值不为空时,会对向量检索结果再做一次重排。取值范围:1<RerankFactor<=5。

    说明
  • 当文档切分稀疏时,重排效率慢。
  • 建议重排个数(TopK*Factor(向上取整))不超过 50。
  • 1.5
    TopKlong

    设置返回 top 结果数量。

    10
    UseFullTextRetrievalboolean

    是否使用全文检索(双路召回)。默认为 false,仅采用向量检索。

    true
    TopKlong

    多向量集合召回合并后,设置返回 top 结果数量。

    10
    PromptParamsstring

    系统提示词模板,需要包括{{ text_chunks }},{{ user_system_prompt }},{{ graph_entities }},{{ graph_relations }},不指定时,该部分不生效。

    "参考以下知识回答问题:{{ text_chunks }}"
    ModelParamsobject

    大语言模型 LLM 调用参数对象。

    MaxTokenslong

    生成最大 token 数

    8192
    Messagesarray<object>

    消息列表

    object

    消息列表

    Contentstring

    消息内容。

    你是一个有帮助的助手。
    Rolestring

    消息角色,可选项:

    • system
    • user
    • assistant
    user
    Modelstring

    使用的大模型名称。可选项参考:百炼帮助文档

    qwen-plus
    Nlong

    生成候选回复数量。

    1
    PresencePenaltydouble

    存在惩罚系数(-2.0 ~ 2.0)

    1.0
    Seedlong

    随机种子。

    42
    Stoparray

    停止词列表。

    string

    停止词。

    "\n"
    Temperaturedouble

    采样温度(0~2)

    0.6
    Toolsarray<object>

    工具列表

    object

    工具详情

    Functionobject

    函数信息。

    Descriptionstring

    函数工具描述。

    获取天气。
    Namestring

    函数工具名称。

    get_weather
    Parametersany

    函数参数 JSON Schema

    {"type": "object", ...}
    TopPdouble

    核采样概率阈值(0~1)

    0.9
    IncludeKnowledgeBaseResultsboolean

    是否返回召回结果,默认 false

    false

    返回参数

    名称类型描述示例值
    object

    响应体。

    RequestIdstring

    请求 ID。

    ABB39CC3-4488-4857-905D-2E4A051D0521
    MultiCollectionRecallResultobject

    多知识库召回信息。

    Entitiesarray

    实体详情。

    entitystring

    实体类型。

    {'entities': []}
    Matchesarray<object>

    召回项。

    matchobject

    召回项。

    Contentstring

    文档内容。

    ADBPG向量数据库。
    FileNamestring

    文件名。

    process_info_19b9df4dc9ad4bf2b30eb2faa4a9a987.txt
    FileURLstring

    查询结果图片的公网 URL 地址,有效时长默认为 2 小时。

    可通过入参 UrlExpiration 自行指定有效时长

    http://viapi-customer-pop.oss-cn-shanghai.aliyuncs.com/b4d8_207196811002111319_570c0e199f03428f812ab21fcc00dd6a
    Idstring

    向量数据的唯一 ID。

    273e3fc7-8f56-4167-a1bb-d35d2f3b9043
    LoaderMetadataany

    文档加载器加载时的元信息。

    {"page":1}
    Metadataobject

    元数据。

    Sourcelong

    文档来源。

    1
    RerankScoredouble

    重排分数。

    0.1
    RetrievalSourcelong

    检索结果的来源。1 表示向量检索,2 表示全文检索,3 表示双路召回。

    3
    Scoredouble

    此条数据的相似度分数,其分数算法和创建索引时指定的算法(l2/ip/cosine)相关。

    12
    Vectorarray

    向量数据。

    vectordouble

    向量数据。

    []
    Relationsarray

    文件名。

    relationstring

    关系边详情。

    {'relations': []}
    RequestIdstring

    请求 ID。

    6B9E3255-4543-5B3B-9E00-6490CA64742B
    Statusstring

    API 执行状态,取值如下:

    • success:执行成功。
    • fail:执行失败。
    success
    Tokenslong

    消耗的 tokens 数。

    42
    Usageobject

    文档理解或 Embedding 消耗的 token 或条数。

    EmbeddingTokenslong

    向量化时使用的 token 数。

    说明 token 是指将输入的文本分割成的最小单位。token 可以是一个单词、一个词组、一个标点符号、一个字符等。
    21
    ChatCompletionobject

    模型响应。

    Choicesarray<object>

    实时生成的文本内容

    choiceobject

    角色标识

    FinishReasonstring

    停止原因。

    finish
    Indexlong

    回复序号。

    0
    Messageobject

    大模型回复响应。

    Contentstring

    文档内容。

    杭州的天气是晴天。
    Rolestring

    消息角色:

    • system
    • user
    • assistant
    user
    ToolCallsarray<object>

    工具调用响应。

    toolcallobject
    Idstring

    ID

    "chatcmpl-c1bebafa-cc48-44e2-88c6-1a3572952f8e"
    Functionobject

    调用的函数信息。

    Argumentsstring

    调用的函数参数。

    {"city":"hangzhou"}
    Namestring

    调用的函数名。

    "get_weather"
    Indexlong

    工具调用序号。

    1
    ReasoningContentstring

    模型思维内容

    逻辑推理过程
    Createdlong

    创建时间。

    1758529748
    Idstring

    响应 ID。

    273e3fc7-8f56-4167-a1bb-d35d2f3b9043
    Modelstring

    使用的模型名称。

    qwen-plus
    Usageobject

    大模型输出使用的 token 数。

    CompletionTokenslong

    生成内容消耗的 token 数。

    42
    PromptTokenslong

    输入 prompt 消耗的 token 数。

    42
    PromptTokensDetailsobject

    promptToken 详情。

    CachedTokenslong

    缓存命中的 token 数量。

    24
    TotalTokenslong

    总 token 数量。

    42
    Messagestring

    返回信息。

    Successful
    Statusstring

    状态,取值说明:

    • success:成功。
    • fail:失败。
    success

    示例

    正常返回示例

    JSON格式

    {
      "RequestId": "ABB39CC3-4488-4857-905D-2E4A051D0521",
      "MultiCollectionRecallResult": {
        "Entities": [
          "{'entities': []}"
        ],
        "Matches": [
          {
            "Content": "ADBPG向量数据库。",
            "FileName": "process_info_19b9df4dc9ad4bf2b30eb2faa4a9a987.txt",
            "FileURL": "http://viapi-customer-pop.oss-cn-shanghai.aliyuncs.com/b4d8_207196811002111319_570c0e199f03428f812ab21fcc00dd6a",
            "Id": "273e3fc7-8f56-4167-a1bb-d35d2f3b9043",
            "LoaderMetadata": {
              "page": 1
            },
            "Metadata": {
              "Source": 1
            },
            "RerankScore": 0.1,
            "RetrievalSource": 3,
            "Score": 12,
            "Vector": [
              0
            ]
          }
        ],
        "Relations": [
          "{'relations': []}"
        ],
        "RequestId": "6B9E3255-4543-5B3B-9E00-6490CA64742B",
        "Status": "success",
        "Tokens": 42,
        "Usage": {
          "EmbeddingTokens": 21
        }
      },
      "ChatCompletion": {
        "Choices": [
          {
            "FinishReason": "finish",
            "Index": 0,
            "Message": {
              "Content": "杭州的天气是晴天。",
              "Role": "user",
              "ToolCalls": [
                {
                  "Id": "chatcmpl-c1bebafa-cc48-44e2-88c6-1a3572952f8e",
                  "Function": {
                    "Arguments": {
                      "city": "hangzhou"
                    },
                    "Name": "get_weather"
                  },
                  "Index": 1
                }
              ],
              "ReasoningContent": "逻辑推理过程"
            }
          }
        ],
        "Created": 1758529748,
        "Id": "273e3fc7-8f56-4167-a1bb-d35d2f3b9043",
        "Model": "qwen-plus",
        "Usage": {
          "CompletionTokens": 42,
          "PromptTokens": 42,
          "PromptTokensDetails": {
            "CachedTokens": 24
          },
          "TotalTokens": 42
        }
      },
      "Message": "Successful",
      "Status": "success"
    }

    错误码

    访问错误中心查看更多错误码。