全部產品
Search
文件中心

OpenSearch:SearchKnowledge-問答文檔查詢

更新時間:Jul 13, 2024

URL

POST /v3/openapi/apps/[app_group_identity]/actions/knowledge-search

  • [app_group_identity]:表示應用程式名稱(需要指定應用程式名稱訪問,主要針對服務中的應用版本)。

  • 以上 URL 省略了請求Header參數及編碼等因素。

  • 以上 URL 中省略了訪問應用的 host 地址。

說明

要求標頭構建可參考:v3 API 簽名機制

請求協議

HTTP

HTTP請求方式

POST

支援格式

JSON

查詢參數

參數

類型

必需

取值範圍

預設值

描述

text

String

輸入的問題

session

String

對話的session,設定了之後,會有多輪對話的功能

type

String

TEXT

輸入問題的類型預設為文本

stream

Boolean

false

是否流式返回

disable

Boolean

false

是否不走chat模型

attitude

String

normal

對話內容的語氣,預設為normal

normal:無

  • polite:使用和藹和禮貌的語氣

  • patience:使用委婉和耐心的語氣

rule

String

simple

對話內容的詳細程度,預設為detailed

  • detailed:詳細和專業

  • stepbystep:詳細且按步驟

noanswer

String

sorry

無法回答問題時的回複,預設為sorry

  • sorry:抱歉,根據已知資訊無法回答該問題

  • uncertain:我不知道

language

String

Chinese

  • 回答問題使用的語言,預設為Chinese

  • Chinese:中文

  • English:英語

  • Thai:泰語

  • Korean:韓語

role

Boolean

true

開啟後,將定製回答的角色

role_name

String

AI小助手

定製回答的角色,例如:AI小助手

out_format

String

table

輸出內容的形式,預設為text

  • text:文本

  • table:表格

  • list:列項

  • markdown:markdown

history_max

INT

多輪對話歷史最大輪數,最大20輪

csi_level

String

none

綠網配置

  • none: 表示不需要經過綠網處理

  • loose: 內容需要經過綠網處理,且只有綠網判斷確定存在敏感內容,就會被攔截,返回無結果

  • strict: 內容需要經過綠網處理,且一旦綠網判斷確定或者疑似存在敏感內容,就會被攔截,返回無結果

link

Boolean

false

控制模型產生的內容是否標識內容引用的來源

  • true: 內容包含來源

  • false: 不包含

filter

String

召回時根據category欄位做過濾,預設為空白;filter使用樣本可參考:filter參數使用說明

sf

Float

[0,+∞) 越大越不相關

表示向量召回相似性閾值:

文檔召回預設值為1.3;

幹預資料召回預設值為0.3;

圖片召回預設值為1.0;

召回的向量相關性

top_n

INT

(0, 50]

5

文檔召回多少個文檔

formula

String

預設為向量相似性

rerank_size

INT

精排文檔數,預設不用設定,系統自己決定

operator

String

AND

表示文本召回時,文本token之間的關係是OR,預設是AND

return_hits

Boolean

false

是否在結果中返迴文檔召回的結果

model

String

opensearch-qwen

可選的LLM模型

新加坡地區:

  • opensearch-llama2-13b

  • opensearch-falcon-7b

  • qwen-turbo

  • qwen-plus

  • qwen-max

enable

Boolean

true

控制是否對召回的結果用模型進行相關性的重排。

  • true: 用模型對召回結果進行重排;

  • false:不用模型對召回結果進行重排;

  • 當options.retrieve.doc.formula不為空白時,預設為false,其他情況預設為true。

query_extend

Boolean

false

  • 表示是否對使用者query進行擴充:擴充query會用來在引擎中召迴文檔切片;

  • query_extend預設為false,和原來邏輯保持一致(不進行query擴充);

  • 如果設定為true,則會多一次與大模型的互動,所以回複速度會變慢。對耗時敏感的應用請勿開啟

query_extend_num

INT

5

表示擴充query的數量,預設值為5;

請求體樣本:

{
  "question" : {
    "text" : "user question",
    "session" : "對話的session,設定了之後,會有多輪對話的功能",
    "type" : "TEXT"
  },
  "options": {
    "chat": {
      "disable" : false, # 是否不走chat模型,預設為false。
      "stream" : false, # 是否流式返回,預設false。
      "model" : "opensearch-qwen", # 選擇的LLM模型,可選項為 opensearch-qwen / opensearch-llama2-13b
      "prompt_config" : { # 自訂prompt配置,可選
        "key" : "value" # 配置內容因模型而異
      },
      "generate_config" : {
        "repetition_penalty": 1.01,
        "num_beams": 1,
        "top_k": 50,
        "top_p": 0.5,
        "do_sample": true,
        "temperature": 0.7
    	},
      "history_max": 20 # 多輪對話歷史最大輪數,
      "csi_level": "none", # 綠網配置
      "link": false # 返回連結
    },
    "retrieve": {
      "doc": {
        "disable": false, # 是否需要關閉文檔召回,預設false。
        "filter": "category=\"type\"", # 召回時根據category欄位做過濾,預設為空白
        "sf": 1.3,    # 向量召回閾值,預設1.3;閾值越大,文檔可能約不相關
        "top_n": 5,    # 文檔召回多少個文檔,預設是5個,取值返回(0, 50],
        "formula" : "", #預設為向量相似性
        "rerank_size" : 5,  #精排文檔數,預設不用設定,系統自己決定
        "operator":"OR"  # 表示文本召回時,文本token之間的關係是OR,預設是AND
      },
      "entry": {
        "disable": false, # 是否需要關閉人工幹預資料的召回,預設false。
        "sf": 0.3 # 幹預資料召回的向量相關性,預設0.3
      },
      "image": {
        "disable": false,  # 是否需要關閉圖片資料的召回,預設false。
        "sf": 1.0          # 圖片資料召回的向量相關性,預設1.0
      },
      "qp": {
        "query_extend": false, # 是否需要對使用者query進行query擴充
        "query_extend_num": 5 # 表示擴充query的數量,預設值為5
      },
      "return_hits": false   # 是否在結果中返迴文檔召回的結果, 即response裡面的search_hits
    },
    "rerank" : {
      "enable": true  # 召回後是否使用大模型進行重排,預設為true
    }
  }
}

返回結果

參數

類型

描述

id

INT

主鍵ID

title

String

文檔的標題

category

String

類目名

url

String

文檔連結

answer

String

問答結果

type

String

返回結果類型

scores

Array

文檔內容分

code

String

返回的錯誤碼

message

String

返回的錯誤資訊

響應體樣本:

{
  "request_id" : "abc123-ABC",
  "result" : {
    "data" : [
      {
        "answer" : "answer text",
        "type" : "text",
        "reference" : [
          {"url" : "http://....","title":"doc title"}
    		]
      },
      {
        "reference": [
          {"id": "16","title": "測試標題","category": "測試類別目","url": "測試連結"}
        ],
        "answer": "https://ecmb.bdimg.com/tam-ogel/-xxxx.jpg",
        "type": "IMAGE"
      }
    ],
    "search_hits" : [  // 查詢請求中設定了options.retrieve.return_hits才會有
      {
        "fields" : {
          "content" : "...."
          "key1" : "value1"
        },
        "scores" : ["10000.1234"],
        "type" : "doc"
      },
      {
        "fields"{
          "answer" : "...",
          "key1" : "value1"
        },
        "scores" : ["10000.1234"],
        "type" : "entry"
      }
    ]
  }
  "errors" : [
    {
      "code" : "如果有錯誤,這裡填錯誤碼",
      "message" : "如果有錯誤,這裡填錯誤資訊"
    }
  ]
}