本頁說明如何利用知識助理在你的文件上建立問答聊天機器人,並根據專家的自然語言回饋提升其品質。
什麼是知識助理?
使用知識助理建立一個聊天機器人,能回答關於你文件的問題並提供高品質的引用回應。 知識助理採用先進的人工智慧,採用 指示式檢索器(Instructed Retriever )方法,針對傳統檢索增強生成(RAG)方法的限制,根據您所提供的文件提供最高品質的答案。
知識助理非常適合支援以下使用情境:
- 根據產品檔回答用戶問題。
- 回答與 HR 原則相關的員工問題。
- 根據支持知識庫回答客戶查詢。
知識助理可讓您改善聊天專員的品質,並根據主題專家的自然語言意見反應來調整其行為。 在體驗中直接提供問題和指引,並分享你的代理程式,讓其他人協作以提升代理程式的效能。
Knowledge Assistant 建立一個代理端點,供你在應用程式下游使用。 例如,下圖顯示如何在 AI 遊樂場中透過與端點聊天來進行互動。 詢問與文件相關的問題,代理人會附上引文回答。
知識助理使用 預設儲存 空間來儲存臨時資料轉換、模型檢查點及驅動每個代理的內部元資料。 刪除代理程式時,會從預設儲存體中移除與代理程式相關聯的所有資料。
Requirements
- 包含下列各項的工作區:
- 提供無伺服器運算(在使用 Unity Catalog 的工作區預設啟用)。
- 已啟用 Unity 目錄。 請參閱 為 Unity Catalog 啟用工作區。
- 存取 馬賽克 AI 模型服務。
- 可取得非零預算的 無伺服器使用政策 。
- 一個位於 支援區域的工作區。
-
databricks-gte-large-en內嵌模型端點必須停用 AI 護欄和速率限制。 請參閱 「配置 Unity AI Gateway 於模型服務端點」。 - 您必須備妥輸入資料才能使用。 您可以從以下項目中選擇:
- Unity Catalog 磁碟區或磁碟區目錄中的檔案。 支援的文件類型包括 txt、pdf、md、ppt/pptx 和 doc/docx。
- 一個帶有檔案欄位的 Unity 目錄資料表。 請參見 步驟 1:為您的代理程式設定 結構需求與設定細節。
- 使用
databricks-gte-large-en作為其嵌入模型的向量搜尋索引。 請參閱 建立向量搜尋索引。
建立知識助理代理程式
轉到在您的工作區左側導覽面板中選擇代理程式。 點選 「建立代理」,然後選擇 知識助理。
步驟 1:設定代理程式
設定你的客服人員,並提供知識來源讓它用來回答問題。
在 [ 名稱] 欄位中,輸入代理程式的名稱。
在 [ 描述] 欄位中,描述代理程式可以執行的動作。
在 [ 知識來源] 面板中,新增您的知識來源。 你可以選擇將檔案放在磁碟區、表格中,或向量搜尋索引。
卷中的檔案
對於 Unity 目錄卷或目錄中的檔案,支援以下檔案類型:txt、pdf、md、ppt/pptx 及 doc/docx。 大於 50 MB 的檔案會在擷取期間自動略過,且不會包含在知識庫中。
- 在 類型中,選擇 「磁碟區中的檔案」。
- 在 [ 來源] 字段中,選取包含檔案的 Unity 目錄磁碟區或磁碟區目錄。
- 在 [ 名稱] 欄位中,輸入知識來源的名稱。
- 在 [描述內容] 底下,描述知識來源所包含的內容,以協助代理程序瞭解使用此數據源的時機。
表格中的檔案
你可以用 Unity 目錄表格中的檔案作為知識來源。 從 SharePoint 或 Google Drive使用 Databricks 連接器匯入的資料表,會自動產生預期格式。 對於從 Jira 或 Confluence 等其他來源匯入的資料表,你可能需要將資料轉換成符合所需結構的模式。
Note
Unity 目錄表必須符合以下要求:
- 在 「類型」中,選擇 「資料表中的檔案」。
- 在 來源 欄位,選擇包含你資料的 Unity 目錄資料表。
- (可選)在 檔案內容欄位 中,選擇包含該檔案內容的欄位。 若未指定,則預設為欄位
content。 僅顯示BINARY和STRING類型的欄位。 - 在 [ 名稱] 欄位中,輸入知識來源的名稱。
- 在 [描述內容] 底下,描述知識來源所包含的內容,以協助代理程序瞭解使用此數據源的時機。
向量搜尋索引
Note
索引只有在使用
databricks-gte-large-en作為嵌入模型時,才支援向量搜尋索引。 建立向量搜尋索引時,請確定您選取此內嵌模型。 如需詳細資訊,請參閱 建立向量搜尋索引。- 在 [類型] 底下,選取 [向量搜尋索引]。
- 在 [ 來源] 欄位中,選取您想要提供代理程式的向量搜尋索引。
- 在 [ 名稱] 欄位中,輸入知識來源的名稱。
- 在 文件 URI 欄中,選取具有來源連結或參考的欄。 代理程式會在引文中使用此內容。
- 在 [ 文字數據行] 字段中,指定包含您要代理程式擷取之原始文字的數據行。
- 在 [描述內容] 底下,描述知識來源所包含的內容,以協助代理程序瞭解使用此數據源的時機。
(選擇性)如果您想要新增更多知識來源,請按兩下 [新增知識來源]。 您最多可以提供10個知識來源。
(選擇性)在 [ 指示] 欄位中,指定代理程式應如何響應的指導方針。
按兩下 [建立代理程式]。
最多可能需要數小時的時間才能建立代理程式,並同步您提供的知識來源。 當代理準備好時,右側面板會顯示同步的知識來源。
Important
如果您更新或將檔案新增至您的知識來源,則需要按一下 同步, 讓客服專員挑選變更。 同步是以增量方式完成的。 例如,如果您將新檔案新增至先前同步處理的 Unity 目錄磁碟區,同步處理只會處理新新增的檔案。
只有知識助理的建立者才能同步知識來源。
步驟 2:測試您的代理程式
當你的代理建置完成後,透過與其聊天來測試它。 代理程式應對其知識來源相關問題提供引文。
- 直接在 「建造 」標籤中與你的經紀人聊天。
- (可選)你也可以點選「 在 Playground 開啟 」,在 AI Playground 裡與它聊天。
- 輸入給代理人的問題。
- 評估其回應:
- 按兩下 [檢視想法 ] 以查看您的代理程式如何處理問題。
- 點擊 「檢視追蹤 」以查看完整追蹤。 你可以在 UI 中 為 trace 加上標籤 ,以追蹤開發過程中的品質評估。
- 點擊 「查看來源 」以查看代理人引用的檔案作為參考資料。 這會開啟一個側邊面板,列出資料來源供你參考。
如果您對代理程式的效能感到滿意,請繼續使用代理程式 as-is。
步驟 3:改善品質
知識助理能根據自然語言回饋調整代理人的行為。 透過配置頁面收集專家回饋,提升經紀人的品質。 收集有標籤的資料可以提升代理人的品質與行為。
在 範例 標籤中,加入用戶會問的問題,或是你的客服人員之前答錯的問題。 另外,你也可以直接從 Unity 目錄資料表匯入有標籤的資料。
新增問題到標籤:
- 按兩下 [+ 新增 ] 以新增問題。
- 在新增問題對話框中,輸入您的問題。
- 按下 新增。 問題應該會出現在UI中。
- 重複執行,直到新增您想要評估的所有問題為止。
- 若要刪除問題,請點擊kebab功能表,然後點擊刪除。
在完成問題添加後,你可以將代理程式分享給他人,以協助你建立高品質的標記數據集。 在右上角,點擊烤肉串選單的
以 管理權限。
為了讓專家能夠存取並提供回饋,你需要授予他們以下權限:
- CAN_MANAGE 權限來自代理配置頁面
分享你的知識助理設定頁面連結,收集專家的回饋。
要標註資料,請點擊問題並在出現的面板中新增 指引 。 規範一經存檔即生效。
請在設定頁面或 AI Playground 再次測試代理,看看效能提升。 如果需要,可以增加更多問題和指引,幫助他們持續改進行為。
(可選)匯入與匯出標示資料
若要直接從 Unity 目錄資料表匯入新的問題和意見反應:
按一下匯入。
在 [ 來源 ] 欄位中,選取包含已標記資料的 Unity 目錄資料表。
資料表必須具有下列結構描述:
-
eval_id:string -
request:string -
guidelines:array-
items:string
-
-
metadata:string -
tags:string
-
按一下匯入。
新的問題與指引會合併到右側標示的資料表中。
要將有標籤的資料匯出為 Unity 目錄資料表:
- 按一下匯出。
- 在 [架構] 欄位中,選取要儲存資料的 Unity 目錄架構位置。
- 在 [資料表名稱] 欄位中,輸入資料表的名稱。
- 按一下匯出。
已建立一個新的表格,並附上標籤資料。
管理知識來源
建立知識助理後,你可以新增、移除和更新知識來源,而不必重新建立代理程式。 只有知識助理的創建者能管理知識來源。
你可以同時草擬多項變更——例如新增來源、移除現有來源,並更新另一個來源的描述——然後點擊 儲存與更新時同時套用所有變更。
新增知識來源
- 在客服設定頁面,請前往 「來源 」標籤。
- 點擊現有知識來源卡下方的 + 新增 。
- 選擇要新增的知識來源類型(Unity 目錄卷中的檔案、Unity 目錄資料表中的檔案,或向量搜尋索引),並依 步驟 1:設定您的代理程式。
- 點擊 儲存並更新。
代理人開始同步新的知識來源。 現有的知識來源及其資料不會受到影響。
Note
每位知識助理最多可提供 10 個知識來源。 新增檔案來源會啟動一個擷取工作,而根據資料量的多寡,這項工作可能需要一些時間。
移除知識來源
- 在客服設定頁面,請前往 「來源 」標籤。
- 將滑鼠移到你想移除的知識來源卡上,然後點擊右上角的垃圾桶圖示
- 在確認對話框中,點擊 確認 以移除原始碼。
- 點擊 儲存並更新。
知識來源及其相關資料會從代理中移除。 此操作不易逆轉,因為重新加入來源資料需重新擷取資料。
Important
你無法移除最後剩下的知識來源。 知識助理必須至少擁有一個知識來源。
更新知識來源細節
你可以更新現有知識來源的名稱和描述。 這些細節有助於經紀人了解何時使用每個來源。
- 在客服設定頁面,請前往 「來源 」標籤。
- 將滑鼠移到你想編輯的知識來源卡上,然後點擊鉛筆圖示。
- 更新 名稱 或 描述 欄位。
- 點擊 儲存並更新。
管理權限
預設情況下,只有代理作者和工作區管理員擁有代理權限。 若要允許其他使用者編輯或查詢您的客服專員,您需要明確授予他們權限。
若要管理客服專員的權限:
- 請在代理人頁面開啟您的代理人。
- 在頂端,按一下
Kebab 選單。
- 按一下 [管理權限]。
- 在 [權限設定] 視窗中,選取使用者、群組或服務主體。
- 選取要授與的權限:
- 可管理:允許管理代理,包括設定權限、編輯代理設定及提升品質。
- 可查詢:允許在 AI Playground 及 API 中查詢代理端點。 僅持有此權限的使用者無法在代理人頁面查看或編輯該代理。
- 按下 新增。
- 點選 [儲存]。
Important
只有知識助理的創建者能同步和管理知識來源,包括新增、移除及更新來源。
查詢代理程式端點
在代理頁面上,點擊端點以開啟代理端點並查看詳細資料。
有多種方式可以查詢已建立的知識助理端點。 以 AI Playground 提供的程式碼範例作為起點:
- 點擊 在遊樂場開啟。
- 在 Playground 中,按一下 [取得程式碼]。
- 選擇您要如何使用端點:
- 選取 Curl API 以取得使用 curl 查詢端點的程式碼範例。
- 選擇 Python API 以顯示一個程式碼範例,以使用 Python 與端點互動。
使用 Databricks SDK 管理知識助理
你可以使用 Databricks SDK for Python 來程式化地建立和管理知識助理及其知識來源。 欲了解完整的可用 API 操作清單,請參閱 知識助理 API 參考文獻。
建立知識助理
以下範例建立一個新的知識助理,包含顯示名稱、描述與指令。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.knowledgeassistants import KnowledgeAssistant
w = WorkspaceClient()
knowledge_assistant = KnowledgeAssistant(
display_name="<display-name>",
description="<description>",
instructions="<instructions>",
)
created = w.knowledge_assistants.create_knowledge_assistant(knowledge_assistant=knowledge_assistant)
print(created)
將<display-name>、<description>和<instructions>替換為你的知識助理的值。
管理知識來源
你可以使用 SDK 新增、移除及更新現有知識助理的知識來源。
新增知識來源
以下範例將 Unity Catalog 卷中的檔案作為知識來源加入到現有的知識助理中。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.knowledgeassistants import KnowledgeSource, FilesSpec
w = WorkspaceClient()
files_source = KnowledgeSource(
display_name="<knowledge-source-name>",
description="<knowledge-source-description>",
source_type="files",
files=FilesSpec(
path="<volume-path>",
),
)
created_source = w.knowledge_assistants.create_knowledge_source(
parent="knowledge-assistants/<knowledge-assistant-id>",
knowledge_source=files_source,
)
print(created_source)
若要新增向量搜尋索引來源,請使用 IndexSpec:
from databricks.sdk.service.knowledgeassistants import KnowledgeSource, IndexSpec
index_source = KnowledgeSource(
display_name="<knowledge-source-name>",
description="<knowledge-source-description>",
source_type="index",
index=IndexSpec(
index_name="<catalog.schema.index-name>",
text_col="<text-column>",
doc_uri_col="<doc-uri-column>",
),
)
created_source = w.knowledge_assistants.create_knowledge_source(
parent="knowledge-assistants/<knowledge-assistant-id>",
knowledge_source=index_source,
)
print(created_source)
移除知識來源
在以下範例中,從知識助理中刪除一個知識來源。
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.knowledge_assistants.delete_knowledge_source(
name="knowledge-assistants/<knowledge-assistant-id>/knowledge-sources/<knowledge-source-id>",
)
更新知識來源
以下範例更新了現有知識來源的顯示名稱與描述。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.knowledgeassistants import KnowledgeSource
w = WorkspaceClient()
updated_source = w.knowledge_assistants.update_knowledge_source(
name="knowledge-assistants/<knowledge-assistant-id>/knowledge-sources/<knowledge-source-id>",
knowledge_source=KnowledgeSource(
display_name="<new-name>",
description="<new-description>",
),
update_mask="display_name,description",
)
print(updated_source)
允許欄位 update_mask: display_name, description。
跨工作空間遷移知識助手
你可以用 SDK 將知識助理從一個工作區複製到另一個工作區。 以下範例從原始工作區檢索知識助理,並在目標工作區中重新建立該助理及其知識來源。
Note
目標工作區中所參考的知識來源(例如向量搜尋索引或 Unity 目錄卷)必須在你建立知識來源前就已存在於目標工作區中。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.knowledgeassistants import (
KnowledgeAssistant,
KnowledgeSource,
IndexSpec,
FilesSpec,
)
# Retrieve the knowledge assistant from the source workspace
source_client = WorkspaceClient()
ka = source_client.knowledge_assistants.get_knowledge_assistant(name="<source-knowledge-assistant-name>")
print(ka.display_name, ka.description, ka.instructions)
# Set up the client for the target workspace
target_client = WorkspaceClient(
host="<target-workspace-url>",
token="<target-workspace-token>",
)
# Create the knowledge assistant in the target workspace
knowledge_assistant = KnowledgeAssistant(
display_name=ka.display_name,
description=ka.description,
instructions=ka.instructions,
)
created = target_client.knowledge_assistants.create_knowledge_assistant(knowledge_assistant=knowledge_assistant)
print(created)
# Re-create knowledge sources in the target workspace
index_source = KnowledgeSource(
display_name="<knowledge-source-name>",
description="<knowledge-source-description>",
source_type="index",
index=IndexSpec(
index_name="<catalog.schema.index-name>",
text_col="<text-column>",
doc_uri_col="<doc-uri-column>",
),
)
files_source = KnowledgeSource(
display_name="<knowledge-source-name>",
description="<knowledge-source-description>",
source_type="files",
files=FilesSpec(
path="<volume-path>",
),
)
created_index_source = target_client.knowledge_assistants.create_knowledge_source(
parent=created.name,
knowledge_source=index_source,
)
print(created_index_source)
created_files_source = target_client.knowledge_assistants.create_knowledge_source(
parent=created.name,
knowledge_source=files_source,
)
print(created_files_source)
將佔位符值替換成適當值,以用於你的來源工作區和目標工作區。
<source-knowledge-assistant-name>遵循knowledge-assistants/<knowledge-assistant-id>格式。
評估您的知識助理
本筆記本示範如何使用精心策劃的評估資料集和自訂評分器來評估 Databricks Knowledge Assistant。
Limitations
- 只支援英文。
- 大於 50 MB 的檔案會在擷取期間自動略過,且不會包含在知識庫中。
- 以底線
_()或句點.()開頭的檔案在擷取時會自動跳過,且不會包含在知識庫中。 - 對於使用 Unity Catalog 資料表檔案的知識來源,僅匯入已選取的內容欄位。 資料表知識來源中的其他欄位則不被使用。
- 僅支援用作
databricks-gte-large-en內嵌模型的向量搜尋索引。 - 必須在
databricks-gte-large-en模型端點上停用 AI 護欄和速率限制。 請參閱 「配置 Unity AI Gateway 於模型服務端點」。