結構化索引:AI 代理如何回答關於您文件的「數量」問題
結構化索引是一個小型表格,代理程式會根據文件已具備的欄位(如標題、價格、層級、連結、圖片)以及用於語意搜尋的向量搜尋來建立。向量搜尋會找到與問題語意相符的段落;但它無法計數、依數值篩選或分組。結構化索引則能回答這些問題,並讓代理程式精確引用連結或識別碼,而非從片段中重建。
詢問「你們有多少?」,代理程式會根據它恰好檢索到的四個段落來回答。要求提供連結,它可能會給你一個真實的連結,但屬於不同的項目——連結可以開啟,圖片可以渲染,不會出現錯誤。以下是發生這種情況的原因,以及如何阻止它:
每份文件都擁有一個顏色。在左側——即當前的檢索方式——答案的標題來自一份文件,而其連結來自另一份文件,顏色會立即暴露這種不匹配。在右側,每個檢索到的片段都攜帶其自身文件的資訊,而連結根本就不是連結:它是一個佔位符,模型在從未看到地址的情況下複製了它。真實的值在輸出時進行替換,因此沒有東西會混淆。
檢索找到段落;它看不到整個集合
向量搜尋基於相似度運作:你的問題變成空間中的一個方向,最接近它的段落會被返回。這對於「這關於 X 說了什麼」完全正確,而在結構上對於「有多少」、「哪些少於 200 字」或「每類別有多少」毫無用處——這些是關於整個集合的問題,而檢索只查看最近的幾個段落。
無論如何調整都無法解決這個問題。沒有一個閾值能讓相似度搜尋返回總數,因為總數不是一個段落。
第二個,較安靜的失敗:一個片段不是一份文件
長文件被分割成片段,以便檢索能找到正確的段落。但是你的標題、你的產品代碼、你的連結和你的圖片位於標頭——這意味著它們位於片段 1,而實際回答問題的段落可能是片段 7。
因此,模型最終持有來自三到四份不同文件中的四到五個片段,它必須弄清楚哪個連結屬於哪個標題。它會猜測。當它猜錯時,答案看起來並沒有錯:連結是真實的,它可以開啟,圖片可以渲染——它只是屬於另一個項目。沒有錯誤。沒有人注意到。
在一個包含 4,500 份文件的目錄中,20 個測試答案中有 11 個將標題與另一份文件的連結配對。使用上述的佔位符機制,同樣的 20 個答案全部正確返回。
什麼是結構化索引
它是一個小表格,每份文件一行,基於你的文件已經包含的欄位建立。沒有發明任何東西,也沒有重寫任何東西——值是逐字複製出來的。
有了它,代理程式有兩種回答方式,而不是一種:
| 問題 | 由...回答 |
|---|---|
| 「你們有關於恐龍的東西嗎?」 | 向量搜尋 |
| 「你們有多少?」 | 表格 |
| 「關於恐龍的東西,適合五歲兒童」 | 表格篩選,向量搜尋排名 |
| 「連結和封面圖片是什麼?」 | 表格,逐字引用 |
你不定義欄位,但你擁有最終決定權
平台會閱讀你的幾份文件,提出欄位建議,然後在保留之前針對你的整個集合驗證每個欄位。只在你的五分之一文件中出現的欄位會被刪除並報告,因為基於它進行篩選會靜默地省略其餘部分。
你有兩種輸入類型:
哪些欄位必須是精確的。 哪個連結是發送給客戶的連結,三個代碼中哪一個是他們會向你引用的——你的數據沒有說明這一點,也無法推斷出來。提前命名它們,它們就會被逐字提取並逐字引用。
用普通語言進行的更正。 「也要追蹤作者,以便人們可以找到他們的其他書籍。」「我想按插畫家篩選。」「刪除封面連結。」更改是作為對現有表格的修補程式提出的,而不是重寫,因此關於一個欄位的請求不會干擾另一個欄位。要求你的文件不包含的內容——例如從未在匯出中出現的出版年份——它會告訴你,而不是添加一個空欄位。
它還告訴你關於你自己數據的事
因為每個欄位在接受之前都會針對整個集合進行測量,所以報告經常揭示無人知曉的事情。在一個包含數千種標題的真實目錄上,它發現十分之一的標題頁數為零——不是短書,而是將缺失值記錄為零,這會拉低每個平均值並產生「最短」的平局。
這個檢查必須在某處發生。今天,它通常在客戶注意到錯誤答案時發生。
當它不適用時
如果你的文件是散文——文章、逐字稿、通信——就沒有東西可以制表,平台拒絕建立索引,而不是建立一個由所有不同值組成的索引。這樣的表格無法以有意義的方式進行計數或分組,擁有它只會引發它回答不佳的問題。
向量搜尋仍然是該材料的正確且唯一的工具。
常見問題
- 為什麼我的代理程式無法告知客戶我有多少產品?
- 因為向量搜尋會回傳數個與問題語意相符的段落,而數個段落無法被計數。這不是調整問題——沒有任何設定能讓檢索回傳總數。結構化索引透過查詢根據文件現有欄位建立的小型表格,來回答計數、範圍和分組問題,而向量搜尋則繼續處理關於語意的问题。
- 代理程式會捏造連結或產品代碼嗎?
- 當欄位標記為精確時,不會。這些值根本不會顯示給模型:它會收到一個佔位符,平台會在輸出時替換為儲存的值。模型無法打錯它從未見過的 URL。這比聽起來更重要——常見的失敗並非捏造連結,而是顯示了屬於不同項目的真實連結,該連結開啟後看起來是正確的。
- 這可以從哪種類型的文件中建立?
- 具有機器可讀標題的文件:元數據表格、YAML front matter 或 Field: value 行。產品匯出、目錄、藥品說明書、政策時間表和課程列表通常符合資格。純散文則不行,且平台會明確指出,而非建立一個無用的表格——如果所有值都不同,則無法有意義地計數或分組。
- 我必須自己定義欄位嗎?
- 不需要。平台會讀取幾份文件並建議欄位,然後在保留之前針對整個集合驗證每一個欄位。您可以之後用自然語言新增、重新命名或刪除欄位,並且可以預先指定哪些欄位必須精確提取——標題、連結、圖片、代碼——因為要發送給客戶的連結是哪一個,是您的數據並未指出的業務事實。
- 新增此功能會重新處理我的知識庫嗎?
- 不會重新計算嵌入。欄位是直接从文件現有的文本中讀取的,因此建立或更改索引不需要重新索引,也不會干擾已經運作的向量搜尋。
- 當我新增或移除文件時,它如何保持最新?
- 新文件在匯入時即被讀取,使用已建立的規則,因此無需等待模型。索引本身會在需要它之前一個問題時按需重建——新增一千份文件不會觸發一千次重建。
代理需要知道的東西,大部分早就寫下來了——在你的網站上,也在你的團隊每週寄給客戶的那幾份 PDF 裡。用網址匯入處理公開的那一半,用上傳處理其餘的。
故事線是智能體與每位終端使用者一同依循的有向圖——每個節點是一個步驟(有自己的任務、知識與工具),出口帶著條件,而每個人的進度、檔案與筆記都會被保存並跨工作階段、跨管道續接。它讓智能體從一個只做單點任務的助理,變成能親自交付多步驟服務的角色。
動態規劃器會盯著一段對話;當使用者正在追求一件真正需要多個步驟、而且落在智能體職責範圍內的任務,同時明顯不知道該怎麼往下走時,它會提議把那件任務展開成一條臨時故事線——一份以清單驅動、一步一步走的計畫,接著由智能體一次專心執行一步,進度使用者看得見。規劃只發生一次,而且經過驗證;執行則是有決定性的。
長篇寫作是一種智能體,它透過先規劃大綱、在開始前詢問所需資訊、根據您的資料與公開來源研究各個章節,並逐步撰寫文件,從而產出一份完整的、多章節的文件——例如備忘錄、市場進入報告或盡職調查報告。您可以在聊天視窗旁的畫布中編輯它,選取任何段落進行重寫,且每個版本都會被保留。