ChatWithKnowledgeBase - 基于知识库的聊天API

更新时间:
复制为 MD 格式

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

接口说明

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

  • DBInstanceId:必填项,用于指定数据库实例 ID。

  • KnowledgeParams:可选项,包含知识检索相关的参数,如检索内容、合并策略等。

  • ModelParams:必填项,包含模型推理相关的参数,如消息列表、使用的模型名称等。

  • PromptTemplate:可选项,用于自定义系统提示词模板。

调试

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

调试

授权信息

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

  • 操作:是指具体的权限点。

  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。

  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:

    • 对于必选的资源类型,用前面加 * 表示。

    • 对于不支持资源级授权的操作,用全部资源表示。

  • 条件关键字:是指云产品自身定义的条件关键字。

  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。

操作

访问级别

资源类型

条件关键字

关联操作

gpdb:ChatWithKnowledgeBase

create

*DBInstance

acs:gpdb:{#regionId}:{#accountId}:dbinstance/{#DBInstanceId}

请求参数

名称

类型

必填

描述

示例值

DBInstanceId

string

实例 ID。

说明

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

gp-xxxxxxxxx

RegionId

string

实例所在的地域 ID。

cn-hangzhou

KnowledgeParams

object

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

MergeMethod

string

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

  • RRF

  • Weight

"RRF"

MergeMethodArgs

object

多知识库融合的参数。

Rrf

object

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

K

integer

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

60

Weight

object

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

Weights

array

各个 SourceCollection 的权重数组。

number

各个 SourceCollection 的权重。

0.01

RerankFactor

number

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

说明
  • 当文档切分稀疏时,重排效率慢。

  • 建议重排个数(TopK*Factor(向上取整))不超过 50。

1.0001

SourceCollection

array<object>

知识库

array<object>

Collection

string

待召回的集合名。

adbpg_document_collection

Namespace

string

命名空间,默认为 public。

说明

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

dukang

NamespacePassword

string

命名空间对应的密码。

说明

本值为 CreateNamespace 接口指定。

namespacePasswd

QueryParams

object

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

Filter

string

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

id = 'llm-t87l87fxuhn56woc_8anu8j2d3f_file_e74635e2cc314e838543e724f6b3b1f2_10658020'

GraphEnhance

boolean

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

false

GraphSearchArgs

object

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

GraphTopK

integer

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

60

HybridSearch

string

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

可选值:

  • RRF:倒数排序融合(Reciprocal rank fusion),有一个参数 k 控制融合效果,详见 HybridSearchArgs 配置;

  • Weight:比重排序,采用参数控制向量和全文的分数比重,然后再排序,参数详见 HybridSearchArgs 配置;

  • Cascaded:先全文检索再在其基础上进行向量检索;

RRF

HybridSearchArgs

object

多路召回的算法参数。目前支持 RRF 和 Weight 两种。HybridPathsSetting 可以指定召回稠密向量(dense)、稀疏向量(sparse)和全文检索(fulltext),如果值为空,默认召回稠密向量(dense)和全文检索(fulltext)。

  • RRF:指定计算分数的算法的1/(k+rank_i)中的 k 常数,范围大于 1 的正整数,格式为:

{
  "HybridPathsSetting": {
    "paths": "dense,fulltext"
  },
  "RRF": {
    "k": 60
  }
}
  • Weight:
    • 双路召回(不指定 HybridPathsSetting,仅指定 alpha):
      • 计算公式:alpha * dense_score + (1-alpha) * fulltext_score,参数 alpha 表示稠密向量和全文的检索分数比重,范围为 0~1,其中 0 表示只全文,1 表示只稠密向量:

{ 
   "Weight": {
    "alpha": 0.5
   }
}
  • 三路召回模式:
    • 计算公式:normalized_dense * dense_score + normalized_sparse * sparse_score + normalized_fulltext * fulltext_score。其中 dense、sparse、fulltext 分别代表稠密向量、稀疏向量、全文检索的权重,取值范围大于等于 0。系统会自动将权重归一化到 0~1(即 normalized_x = x / (dense + sparse + fulltext))。

{
  "HybridPathsSetting": {
     "paths": "dense,sparse,fulltext"
   },
  "Weight": {
    "dense": 0.5,
    "sparse": 0.3,
    "fulltext": 0.2
  }
}

any

参数配置值。

Metrics

string

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

  • l2:欧氏距离。

  • ip:点积(内积)距离。

  • cosine:余弦相似度。

cosine

RecallWindow

array

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

说明
  • 推荐当文档切分过碎、检索可能会丢失上下文信息时使用该参数。

  • 重排优先窗口化,即先 rerank,再窗口化处理。

integer

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

说明
  • 推荐当文档切分过碎、检索可能会丢失上下文信息时使用该参数。

  • 重排优先窗口化,即先 rerank,再窗口化处理。

[-1,1]

RerankFactor

number

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

说明
  • 当文档切分稀疏时,重排效率慢。

  • 建议重排个数(TopK*Factor(向上取整))不超过 50。

1.5

TopK

integer

设置返回 top 结果数量。

10

UseFullTextRetrieval

boolean

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

true

TopK

integer

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

10

PromptParams

string

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

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

ModelParams

object

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

MaxTokens

integer

生成最大 token 数

8192

Messages

array<object>

消息列表

object

消息列表

Content

string

消息内容。

你是一个有帮助的助手。

Role

string

消息角色,可选项:

  • system

  • user

  • assistant

user

Model

string

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

qwen-plus

N

integer

生成候选回复数量。

1

PresencePenalty

number

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

1.0

Seed

integer

随机种子。

42

Stop

array

停止词列表。

string

停止词。

"\n"

Temperature

number

采样温度(0~2)

0.6

Tools

array<object>

工具列表

array<object>

工具详情

Function

object

函数信息。

Description

string

函数工具描述。

获取天气。

Name

string

函数工具名称。

get_weather

Parameters

any

函数参数 JSON Schema

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

TopP

number

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

0.9

IncludeKnowledgeBaseResults

boolean

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

false

返回参数

名称

类型

描述

示例值

object

响应体。

RequestId

string

请求 ID。

ABB39CC3-4488-4857-905D-2E4A051D0521

MultiCollectionRecallResult

object

多知识库召回信息。

Entities

array

实体详情。

string

实体类型。

{'entities': []}

Matches

array<object>

召回项。

array<object>

召回项。

Content

string

文档内容。

ADBPG向量数据库。

FileName

string

文件名。

process_info_19b9df4dc9ad4bf2b30eb2faa4a9a987.txt

FileURL

string

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

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

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

Id

string

向量数据的唯一 ID。

273e3fc7-8f56-4167-a1bb-d35d2f3b9043

LoaderMetadata

any

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

{"page":1}

Metadata

object

元数据。

any

元数据信息

RerankScore

number

重排分数。

0.1

RetrievalSource

integer

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

3

Score

number

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

12

Vector

array

向量数据。

number

向量数据。

[]

Relations

array

文件名。

string

关系边详情。

{'relations': []}

RequestId

string

请求 ID。

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

Status

string

API 执行状态,取值如下:

  • success:执行成功。

  • fail:执行失败。

success

Tokens

integer

消耗的 tokens 数。

42

Usage

object

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

EmbeddingTokens

integer

向量化时使用的 token 数。

说明

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

21

ChatCompletion

object

模型响应。

Choices

array<object>

实时生成的文本内容

array<object>

角色标识

FinishReason

string

停止原因。

finish

Index

integer

回复序号。

0

Message

object

大模型回复响应。

Content

string

文档内容。

杭州的天气是晴天。

Role

string

消息角色:

  • system

  • user

  • assistant

user

ToolCalls

array<object>

工具调用响应。

array<object>

Id

string

ID。

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

Function

object

调用的函数信息。

Arguments

string

调用的函数参数。

{"city":"hangzhou"}

Name

string

调用的函数名。

"get_weather"

Index

integer

工具调用序号。

1

ReasoningContent

string

模型思维内容。

逻辑推理过程

Created

integer

创建时间。

1758529748

Id

string

响应 ID。

273e3fc7-8f56-4167-a1bb-d35d2f3b9043

Model

string

使用的模型名称。

qwen-plus

Usage

object

大模型输出使用的 token 数。

CompletionTokens

integer

生成内容消耗的 token 数。

42

PromptTokens

integer

输入 prompt 消耗的 token 数。

42

PromptTokensDetails

object

promptToken 详情。

CachedTokens

integer

缓存命中的 token 数量。

24

TotalTokens

integer

总 token 数量。

42

Message

string

返回信息。

Successful

Status

string

状态,取值说明:

  • 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": {
          "key": ""
        },
        "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"
}

错误码

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

变更历史

更多信息,参考变更详情