全部產品
Search
文件中心

OpenSearch:文檔切片

更新時間:Aug 06, 2025

AI搜尋開放平台支援通過API的方式調用文檔切片服務,您可以將服務整合到您的業務處理鏈路中,來提升檢索或處理效率。

服務名稱

服務ID

服務描述

API調用QPS限制(含主帳號與RAM子帳號)

文檔切片服務-001

ops-document-split-001

提供通用的文本切片策略,可基於文檔段落格式、文本語義、指定規則,對html, markdown, txt格式的結構化資料進行拆分,同時支援富文本形式提取代碼,圖片,表格。

2

說明

如需擴充QPS,請通過工單聯絡支援人員協助。

在基於檢索的產生(Retrieval-Augmented Generation,簡稱RAG)中,通常的做法是將待檢索的文本處理成向量,並儲存在向量資料庫中,方便後續檢索。切片服務將長文檔分成較小的片段,可以很好地匹配文本向量化模型對每段文本長度的要求,從而達到將超長文檔向量化的目的。

基礎使用方法

切片API輸入是一條純文字的字串以及附加配置,輸出是切成片段的文本(和可能的富文本)。一共返回4個list:chunks,nodes,rich_texts,sentences。只需要將chunks list,以及rich_texts list中type!=image的content欄位內容提取出來,即可作為文檔切片結果進行下一步embedding。可以參考情境中心的代碼模板,python代碼如下:

# 提取切片結果,注意這裡只用了["chunks"]和除了圖片外的["rich_texts"]
doc_list = []
for chunk in document_split_result.body.result.chunks:
    doc_list.append({"id": chunk.meta.get("id"), "content": chunk.content})

for rich_text in document_split_result.body.result.rich_texts:
    if rich_text.meta.get("type") != "image":
        doc_list.append({"id": rich_text.meta.get("id"), "content": rich_text.content})

進階使用方法

文檔切片服務可將複雜的文檔內容按照指定Token數量進行切分,最終形成一個由多節點群組成的樹形結構。樹形結構可以用於RAG的retrieval階段,補全召回切片的上下文資訊,實現更高的回答準確率。

文檔切片服務的邏輯是儘可能地將文本按照最宏觀的結構去切分,如果此時每個切片的長度不能滿足要求,那麼則會遞迴地繼續切分每個切片,直到所有的切片長度都符合要求。遞迴切分的過程形成了一棵切片樹,其中每個葉子節點對應了一個真正的切片結果,即最終節點。

在後續的向量召回切片的過程中,您可以使用切片樹的資訊做上下文補全。例如,可以在模型Token數限制範圍內將召回切片的同一級其他切片一同補齊,提高資訊的完整度。

例如,給出一段文本

首次開通AI搜尋開放平台服務成功後,系統會自動建立出一個預設的工作空間:Default。
點擊建立空間。輸入自訂的工作空間名稱,點擊確認即可。點擊建立新的API-KEY後,系統會建立產生API-KEY,此處客戶可以點擊複製按鈕將API-KEY的內容複寫儲存。

以下是一個可能的切片樹:

root (6b15)
  |
  +-- paragraph_node (557b)
       |
       +-- newline_node (ef4d)[首次開通AI搜尋開放平台...Default。]
       |
       +-- newline_node (c618)
            |
            +-- sentence_node (98ce)[點擊建立空間...點擊確認即可。]
            |
            +-- sentence_node (922a)[點擊建立新的API-KEY後...複製按鈕將API-KEY的內容複寫儲存。]

在指定切片最大長度的前提下,完整的切片樹包含最終節點(有切片內容的節點)及中間節點(不包含任何內容,僅為邏輯節點)兩種類型。整棵樹會以所有節點列表的形式被返回(nodes),同時最終節點還會在一個列表中單獨返回(chunks)。以下是可能出現的一些節點種類:

  • root:根節點

  • paragraph_node:段落節點,代表對於"\n\n"分隔字元的切分,用於標識段落位置(樣本中無\n\n,因此只有一個這樣的中間節點)

  • newline_node:換行節點,代表對於"\n"分隔字元的切分(樣本中newline_node (ef4d)節點滿足切片長度要求,則為最終節點;newline_node (c618)節點需進一步切分,則為中間節點)

  • sentence_node:句子節點,代表對於“。”的切分

  • subsentence_node:子句節點,代表對於“,”的切分(樣本未出現)

對於以markdown和html格式輸入的內容,切片服務還會將一些富文本(rich_texts)單獨輸出。例如html中的<img>,<table>,<code> tags. 這些富文本在切片原文中的位置將會被替換成[image_0],<table>table_0</table>, <code>code_0</code>,與此同時每個富文字區塊都會在rich_texts欄位被返回。這樣的設計方便單獨召回富文字區塊,也可以在需要時放回原文中。每個富文字區塊都歸屬於唯一切片的最終節點chunk。

此外,為了提升短query的召回率,客戶可以選擇配置strategy.need_sentence=true。此時會將原文按句子做切分並單獨返回sentences列表,可以作為一路獨立召回。為了方便擴充sentence,每個sentence塊都歸屬於唯一的切片的最終節點chunk。(注意這個sentences列表和上面的sentence_node沒有關係)

上文加粗的chunks,nodes,rich_texts,sentences就是API返回的全部欄位了,您可以在下面的參數描述中找到詳細用法。為了切片的簡潔性,輸出的每個切片使用的是簡化版的html文法。

前提條件

  • 擷取身份鑒權資訊

    通過API調用AI搜尋開放平台服務時,需要對調用者身份進行鑒權,如何擷取鑒權資訊請參見擷取API-KEY

  • 擷取服務調用地址

    支援通過公網和VPC兩種方式調用服務,詳情請參見擷取服務接入地址

請求說明

公用說明

  • 請求body最大不能超過8MB。

請求方式

POST

URL

{host}/v3/openapi/workspaces/{workspace_name}/document-split/{service_id} 
  • host:調用服務的地址,支援通過公網和VPC兩種方式調用API服務,可參見擷取服務接入地址

  • workspace_name:工作空間名稱,例如default。

  • service_id: 系統內建服務id,例如ops-document-split-001。

請求參數

Header參數

API-KEY認證

參數

類型

必填

描述

樣本值

Content-Type

String

請求類型:application/json

application/json

Authorization

String

API-Key

Bearer OS-d1**2a

Body參數

參數

類型

必填

描述

樣本值

document.content

String

需要切片的純文字內容,根據JSON標準,string欄位如果包含以下字元需要轉義:"\\、\"、\/、\b、\f、\n、\r、\t"。常用JSON庫產生的JSON 串都無需手動轉義。

"標題\n第一行\n第二行"

document.content_encoding

String

content編碼類別型

  • utf8:預設編碼類別型

utf8

document.content_type

String

content格式

  • html

  • markdown

  • text:預設格式(相容plain格式)

html

strategy.type

String

段落切片策略

  • default:預設策略,根據文檔段落格式進行切分

default

strategy.max_chunk_size

Int

切片的最大長度,預設300。

300

strategy.compute_type

String

長度計算方式

  • token:預設,按照ops-text-embedding-001向量模型的tokenizer計算

token

strategy.need_sentence

Boolean

是否同時返回sentence層級切片,用於最佳化短query查詢

  • 預設false

  • 如有需要可選true,token使用量翻倍

false

補充說明:

  • strategy.need_sentence參數:sentence層級切片是一種獨立於段落切片的策略,簡單來說就是將每一句話都作為獨立的切片返回。開啟sentence層級切片策略後,短切片及長切片可以同時召回,作為相互補充提升整體召回率。

返回參數

參數

類型

描述

樣本值

request_id

String

系統對一次API調用賦予的唯一標識。

B4AB89C8-B135-****-A6F8-2BAB801A2CE4

latency

Float/Int

請求耗時,單位ms。

10

usage

Object

本次調用產生的計量資訊。

"usage": {

"token_count": 3072

}

usage.token_count

Int

Token數量。

3072

result.chunks

List(Chunk)

切片結果清單(最終節點),包含切片內容及切片標識資訊。

[{

"content" : "xxx",

"meta":{'parent_id':x, 'id': x, 'type': 'text'}

}]

result.chunks[].content

String

切片結果中的切片內容。

"xxx"

result.chunks[].meta

Map

切片結果中的切片標識資訊,以下欄位都是string類型

  • parent_id:切片父節點id

  • id: 切片節點id

  • type: 切片內容輸出類型,目前全為text

  • token: 當前切片的token數量

{

'parent_id': '3b94a18555c44b67b193c6ab4f****',

'id': 'c9edcb38fdf34add90d62f6bf5c6****,

'type': 'text'

'token': 10,

}

result.rich_texts

List(RichText)

富文本輸出形式,當document.content_type為markdown、html時,切片內容中的image, code, table資訊會被替換為富文本形式。例如,輸入content中的"![image](www.example.com)"圖片URL會被替換為預留位置"[img_69646]",對應rich_texts中id=img_69646-0的富文本切片(注意id的命名尾碼)

說明

document.content_type為text時不支援該形式。

[{

"content" : "xxx",

"meta":{'belonged_chunk_id':x, 'id': x, 'type': 'table'}

}]

result.rich_texts[].content

String

富文本輸出形式中的切片內容。image的content是URL,所以不會被切分,可能超過max_chunk_size。table會被切分為表頭+每一行內容的形式。code和本文的切分方法一致。

"<table><tr>\n<th>動作</th>\n<th>說明</th>\n</tr><tr>\n<td>隱藏組件</td>\n<td>隱藏組件,不需要參數。</td>\n</tr></table>"

result.rich_texts[].meta

Map

富文本輸出形式中的切片標識資訊,欄位都為string類型

  • belonged_chunk_id:歸屬切片節點id(每個富文本一定屬於一個切片節點)

  • id: 富文本id

  • type: code/image/table

  • token: 當前切片的token數量(image的token固定為-1)

{

'type': 'table',

'belonged_chunk_id': 'f0254cb7a5144a1fb3e5e024a3****b',

'id': 'table_2-1'

'token': 10

}

result.nodes

List(Node)

切片樹節點列表。

[{'parent_id':x, 'id': x, 'type': 'text'}]

result.nodes[]

Map

切片樹節點資訊,欄位都為string類型

  • id:節點id,如果節點同時是一個切片,那麼和切片ID對應

  • type: string, 可選項有paragraph_node/newline_node/sentence_node/subsentence_node;如果是html或者markdown則可能為<h1>~<h6>,代表不同的分隔字元

  • parent_id: string,父節點id

{

'id': 'f0254cb7a5144a1fb3e5e024a3****b',

'type': 'paragraph_node',

'parent_id': 'f0254cb7a5144a1fb3e5e024a3****b'

}

result.sentences(可選)

List(sentence)

request中strategy.need_sentence=true時,返回每個分區中分句的列表。

[{

"content" : "xxx",

"meta":{'belonged_chunk_id':x, 'id': x, 'type': 'sentence'}

}]

result.sentences[].content(可選)

String

句子內容

"123"

result.sentences[].meta(可選)

Map

句子資訊:

  • belonged_chunk_id:歸屬切片節點id

  • id: 句子id

  • type: sentence,固定值

  • token: 當前切片的Token數量

{

'id': 'f0254cb7a5144a1fb3e5e024a3****b1-1',

'type': 'sentence',

'belonged_chunk_id': 'f0254cb7a5144a1fb3e5e024a3****b',

'token': 10

}

Curl請求樣本

curl -XPOST -H"Content-Type: application/json"  
"http://***-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/document-split/ops-document-split-001"  
-H "Authorization: Bearer 您的API-KEY"  
-d "{
    \"document\":{
          \"content\":\"產品優勢\\n行業演算法版\\n智能\\n內建豐富的定製化演算法模型,並結合不同行業搜尋特點,推出行業召回、排序演算法,保障更優搜尋效果。\\n\\n靈活、可定製\\n開發人員可基於自身業務特性與資料,定製相應的演算法模型、應用結構、資料處理、查詢分析、排序等配置,滿足個人化搜尋需求,提升搜尋結果點擊率,實現業務快速迭代,極大縮短需求上線的周期。\\n\\n安全、穩定\\n提供7×24小時的運行維護,並以線上工單和電話報障等方式提供支援人員,具備完善的故障監控、自動警示、快速定位等一系列故障應急響應機制。基於阿里雲的AccessKeyId和AccessKeySecret安全加密對,從提供者上進行許可權控制和隔離,保證使用者層級的資料隔離,使用者資料安全有保障。資料冗餘備份,保證資料不會丟失。\\n\\nAuto Scaling\\n具備彈性擴容能力,使用者可根據需要自行擴充或縮減所使用的資源。\\n\\n豐富的外圍功能\\n支援熱搜、底紋、下拉提示、統計報表等一系列搜尋外圍功能,方便使用者展示及分析。\\n\\n開箱即用\\n無需營運部署叢集,快速一站式接入搜尋服務\\n\\n高效能檢索版\\n高吞吐\\n單表支援萬層級的寫入TPS,秒級更新。\\n\\n安全、穩定\\n提供7×24小時的運行維護,並以線上工單和電話報障等方式提供支援人員,具備完善的故障監控、自動警示、快速定位等一系列故障應急響應機制。基於阿里雲的AccessKeyId和AccessKeySecret安全加密對,從提供者上進行許可權控制和隔離,保證使用者層級的資料隔離,使用者資料安全有保障。資料冗餘備份,保證資料不會丟失。\\n\\nAuto Scaling\\n具備彈性擴容能力,使用者可根據需要自行擴充或縮減所使用的資源。\\n\\n開箱即用\\n無需營運部署叢集,快速一站式接入搜尋服務\\n\\n向量檢索版\\n穩定\\n底層採用C++實現,經過十多年的發展,支撐了多個核心業務,非常穩定,非常適用於對穩定性要求較高的核心搜尋情境。\\n\\n高效\\n分布式搜尋引擎,可以高效的支援海量資料的檢索,同時也支援資料的即時更新(秒級生效),非常適用於對查詢耗時敏感、時效性要求高的搜尋情境。\\n\\n低成本\\n支援多種索引壓縮策略,同時支援多值索引載入測試,能夠以較低的成本滿足使用者的查詢需求。\\n\\n向量演算法\\n支援各種非結構化資料(如語音、圖片、視頻,語言文字、行為等)向量檢索。\\n\\nSQL查詢\\n支援SQL查詢文法,支援多表線上join,提供豐富的內建UDF函數和UDF函數定製機制,以滿足不同使用者的檢索需求。在營運系統中我們已經整合SQL studio,方便使用者進行SQL開發與測試。\\n\\n召回引擎版\\n穩定\\n底層採用C++實現,經過十多年的發展,支撐了多個核心業務,非常穩定,非常適用於對穩定性要求較高的核心搜尋情境。\\n\\n高效\\n問天引擎是一個分布式搜尋引擎,可以高效的支援海量資料的檢索,同時也支援資料的即時更新(秒級生效),非常適用於對查詢耗時敏感、時效性要求高的搜尋情境。\\n\\n低成本\\n問天引擎支援多種索引壓縮策略,同時支援多值索引載入測試,能夠以較低的成本滿足使用者的查詢需求。\\n\\n功能豐富\\n問天引擎支援多種分析器類型、多種索引類型、強大的查詢文法,能夠很好的滿足使用者的檢索需求。同時我們還提供外掛程式機制,方便使用者定製自己的業務處理邏輯。\\n\\nSQL查詢\\n問天引擎支援SQL查詢文法,支援多表線上join,提供豐富的內建UDF函數和UDF函數定製機制,以滿足不同使用者的檢索需求。在營運系統中我們即將整合SQL studio,方便使用者進行SQL開發與測試。\",
          \"content_encoding\":\"utf8\",\"content_type\":\"text\"
    },
    \"strategy\":{
          \"type\":\"default\",
          \"max_chunk_size\":300,
          \"compute_type\":\"token\",
          \"need_sentence\":false
    }
}"

響應樣本

正常響應樣本

{
	"request_id": "47EA146B-****-448C-A1D5-50B89D7EA434",
	"latency": 161,
	"usage": {
		"token_count": 800
	},
	"result": {
		"chunks": [
			{
				"content": "產品優勢\\n行業演算法版\\n智能\\n內建豐富的定製化演算法模型,並結合不同行業搜尋特點,推出行業召回、排序演算法,保障 更優搜尋效果。\\n\\n靈活、可定製\\n開發人員可基於自身業務特性與資料,定製相應的演算法模型、應用結構、資料處理、查詢分析、排序等配置,滿足個人化搜尋需求,提升搜尋結果點擊率,實現業務快速迭代,極大縮短需求上線的周期。\\n\\n安全、穩定\\n提供7×24小時的運行維護,並以線上工單和電話報障等方式提供支援人員,具備完善的故障監控、自動警示、快速定位等一系列故障應急響應機制。基於阿里雲的AccessKeyId和AccessKeySecret安全加密對,從提供者上進行許可權控制和隔離,保證使用者層級的資料隔離,使用者 資料安全有保障。資料冗餘備份,保證資料不會丟失。\\n\\nAuto Scaling\\n具備彈性擴容能力,使用者可根據需要自行擴充或縮減所使用的資源。\\n\\n豐富的外圍功能\\n支援熱搜、底紋、下拉提示、統計報表等一系列搜尋外圍功能,方便使用者展示及分析。\\n\\n開箱即 用\\n無需營運部署叢集,快速一站式接入搜尋服務\\n\\n高效能檢索版\\n高吞吐\\n單表支援萬層級的寫入TPS,秒級更新",
				"meta": {
					"parent_id": "dee776dda3ff4b078bccf989a6bd****",
					"id": "27eea7c6b2874cb7a5bf6c71afbf****",
					"type": "text"
				}
			},
			{
				"content": "。\\n\\n安全、穩定\\n提供7×24小時的運行維護,並以線上工單和電話報障等方式提供支援人員,具備完善的故障監控、自動警示、快速定位等一系列故障應急響應機制。基於阿里雲的AccessKeyId和AccessKeySecret安全加密對,從提供者上進行許可權控制和隔離,保證 使用者層級的資料隔離,使用者資料安全有保障。資料冗餘備份,保證資料不會丟失。\\n\\nAuto Scaling\\n具備彈性擴容能力,使用者可根據需要自行擴充或縮減所使用的資源。\\n\\n開箱即用\\n無需營運部署叢集,快速一站式接入搜尋服務\\n\\n向量檢索版\\n穩定\\n底層 採用c++實現,經過十多年的發展,支撐了多個核心業務,非常穩定,非常適用於對穩定性要求較高的核心搜尋情境。\\n\\n高效\\n分布式搜尋引擎,可以高效的支援海量資料的檢索,同時也支援資料的即時更新(秒級生效),非常適用於對查詢耗時敏感、時效性要求 高的搜尋情境。\\n\\n低成本\\n支援多種索引壓縮策略,同時支援多值索引載入測試,能夠以較低的成本滿足使用者的查詢需求。\\n\\n向量演算法\\n支援各種非結構化資料(如語音、圖片、視頻,語言文字、行為等)向量檢索。\\n\\nSQL查詢\\n支援SQL查詢文法,支援多表線上join,提供豐富的內建UDF函數和UDF函數定製機制,以滿足不同使用者的檢索需求",
				"meta": {
					"parent_id": "dee776dda3ff4b078bccf989a6bd****",
					"id": "bf9fcfb47fcf410aa05216e268df****",
					"type": "text"
				}
			},
			{
				"content": "。在營運系統中我們已經整合SQL studio,方便使用者進行SQL開發與測試。\\n\\n召回引擎版\\n穩定\\n底層採用C++實現,經過十多年的發展,支撐了多個核心業務,非常穩定,非常適用於對穩定性要求較高的核心搜尋情境。\\n\\n高效\\n問天引擎是一個分布式搜尋引擎,可以高效的支援海量資料的檢索,同時也支援資料的即時更新(秒級生效),非常適用於對查詢耗時敏感、時效性要求高的搜尋情境。\\n\\n低成本\\n問天引擎支援多種索引壓縮策略,同時支援多值索引載入測試,能夠以較低的成本滿足使用者的查詢需求。\\n\\n功能豐富\\n問天引擎支援多種分析器類 型、多種索引類型、強大的查詢文法,能夠很好的滿足使用者的檢索需求。同時我們還提供外掛程式機制,方便使用者定製自己的業務處理邏輯。\\n\\nSQL查詢\\n問天引擎支援SQL查詢文法,支援多表線上join,提供豐富的內建UDF函數和UDF函數定製機制,以滿足不同使用者的檢索需求。在營運系統中我們即將整合SQL studio,方便使用者進行SQL開發與測試。",
				"meta": {
					"parent_id": "dee776dda3ff4b078bccf989a6bd****",
					"id": "26ab0e4f7665487bb0a82c5a226a****",
					"type": "text"
				}
			}
		],
		"nodes": [
			{
				"id": "dee776dda3ff4b078bccf989a6bd****",
				"type": "root",
				"parent_id": "dee776dda3ff4b078bccf989a6bd****"
			},
			{
				"id": "27eea7c6b2874cb7a5bf6c71afbf****",
				"type": "sentence",
				"parent_id": "dee776dda3ff4b078bccf989a6bd****"
			},
			{
				"id": "bf9fcfb47fcf410aa05216e268df****",
				"type": "sentence",
				"parent_id": "dee776dda3ff4b078bccf989a6bd****"
			},
			{
				"id": "26ab0e4f7665487bb0a82c5a226a****",
				"type": "sentence",
				"parent_id": "dee776dda3ff4b078bccf989a6bd****"
			}
		],
		"rich_texts": []
	}
}

異常響應樣本

在訪問請求出錯的情況下,輸出的結果中會通過code和message指明出錯原因。

{
    "request_id": "817964CD-1B84-4AE1-9B63-4FB99734****",
    "latency": 0,
    "code": "InvalidParameter",
    "message": "JSON parse error: Invalid UTF-8 start byte 0xbc; nested exception is com.fasterxml.jackson.core.JsonParseException: Invalid UTF-8 start byte 0xbc\n at line: 2, column: 19]"
}

狀態代碼說明

請參見AI搜尋開放平台狀態代碼說明