許多組織經常面臨大量的影片和音訊內容,這些內容中包含了有價值的見解。然而,如何有效且準確地提取這些見解仍然是一個挑戰。這篇文章探討了一個創新的解決方案,旨在透過精心設計的使用者體驗,加速影片和音訊的審查流程,並促進人類與人工智慧的合作。透過從使用者的角度來看待問題,我們可以創造出一個強大的工具,讓人們能夠快速找到長錄音中的相關資訊,而不必擔心人工智慧產生的錯誤資訊。
許多專業人士,例如律師、記者、內容創作者和醫療工作者,經常需要審查數小時的錄音內容,以提取可驗證的準確見解。傳統的手動審查方法或簡單的關鍵字搜索往往耗時且容易錯過重要的上下文。雖然有更先進的人工智慧摘要工具,但它們可能會產生錯誤資訊,這在醫療或法律程序等高風險環境中可能是危險的。
我們的解決方案,錄音見解提取網頁應用程式 (ReVIEW),針對這些挑戰提供了一種無縫的方法,讓人類與人工智慧合作,加速審查過程,同時保持結果的準確性和可信度。這個應用程式建立在亞馬遜轉錄 (Amazon Transcribe) 和亞馬遜基石 (Amazon Bedrock) 之上,這是一個完全管理的服務,提供來自領先人工智慧公司的高效能基礎模型 (FMs),如 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和亞馬遜,透過單一 API 提供,並具備一系列功能來構建安全、隱私和負責任的生成式人工智慧應用程式。
使用者體驗
為了加速使用者對長音訊或影片的審查,同時降低錯誤資訊的風險,我們引入了時間戳引用的概念。大型語言模型 (LLMs) 不僅能根據檔案的轉錄內容回答使用者的問題,還能識別在轉錄中討論答案的時間戳。透過轉錄預處理、提示工程和結構化 LLM 輸出,我們實現了以下截圖所示的使用者體驗,展示了 LLM 生成的時間戳引用轉換為可點擊按鈕(以紅色底線顯示),這些按鈕可以導航到來源影片的正確部分。
這位使用者上傳了多個影片,包括一些 AWS re:Invent 的演講錄音。你會注意到,前面的回答實際上包含了一個來自轉錄錯誤的錯誤資訊;人工智慧助手回答說「Hyperpaths」被宣布,但實際上這項服務叫做亞馬遜 SageMaker HyperPod。
這位使用者的旅程如下:
使用者詢問人工智慧助手「SageMaker 有什麼新消息?」助手搜尋上傳的 re:Invent 影片的時間戳轉錄。
助手提供了一個帶有引用的答案。這些引用包含影片的名稱和時間戳,前端顯示對應於引用的按鈕。每個引用可以指向不同的影片,或同一影片中的不同時間戳。
使用者讀到 SageMaker「Hyperpaths」被宣布。他們接著透過選擇按鈕來驗證生成答案的準確性,這些按鈕會自動播放從該時間戳開始的來源影片。
使用者看到這個產品實際上叫做亞馬遜 SageMaker HyperPod,並能夠確認 SageMaker HyperPod 是在 re:Invent 上宣布的產品。
這種體驗是 ReVIEW 應用程式的核心,讓使用者能夠有效地根據上傳的音訊或影片檔案獲得問題的答案,並透過重新觀看來源媒體來驗證答案的準確性。
解決方案概述
這個應用程式的完整代碼可以在 GitHub 倉庫中找到。
解決方案的架構如以下圖所示,展示了數據在應用程式中的流動。
工作流程包括以下步驟:
使用者通過亞馬遜 CloudFront 分發訪問應用程式,這會添加自定義標頭並將 HTTPS 流量轉發到彈性負載平衡應用程式負載平衡器。負載平衡器後面是一個運行在亞馬遜彈性容器服務 (Amazon ECS) 上的容器化 Streamlit 應用程式。
亞馬遜 Cognito 處理前端應用程式和亞馬遜 API Gateway 的使用者登錄。
當使用者通過前端上傳媒體檔案時,會為前端生成一個預簽名的 URL,以便將檔案上傳到亞馬遜簡單儲存服務 (Amazon S3)。
前端將檔案發送到應用程式 S3 存儲桶,此時會通過觸發的 AWS Lambda 啟動檔案處理流程。檔案被發送到亞馬遜轉錄,生成的轉錄內容存儲在亞馬遜 S3 中。轉錄內容會被後處理成更適合 LLM 使用的文本格式,並且 AWS Step Functions 狀態機會將轉錄內容同步到配置在亞馬遜基石知識庫中的知識庫。知識庫同步過程處理轉錄內容的分塊和嵌入,並將嵌入向量和檔案元數據存儲在亞馬遜 OpenSearch 無伺服器向量數據庫中。
如果使用者對某個特定轉錄檔案提出問題(由 UI 中的「選擇媒體檔案」下拉選單指定),則會使用整個轉錄內容生成回答,因此不需要使用知識庫進行檢索步驟,並且 LLM 會直接通過亞馬遜基石調用。
如果使用者提出的問題的答案可能出現在任何數量的來源影片中(通過在 UI 的下拉選單中選擇與所有媒體檔案聊天),則會使用亞馬遜基石知識庫的 RetrieveAndGenerate API 來嵌入使用者查詢,找到向量數據庫中語義相似的塊,將這些塊輸入到 LLM 提示中,並生成特別格式的回應。
在整個過程中,應用程式數據的跟蹤轉錄和攝取狀態、將使用者名稱映射到上傳的檔案、以及緩存回應的工作都通過亞馬遜 DynamoDB 完成。
架構的一個重要特徵是通過部署的 REST API API Gateway 清晰地分離前端和後端邏輯。這是一個設計決策,旨在使這個應用程式的使用者能夠用自定義前端替換 Streamlit 前端。GitHub 倉庫的 README 中有關於替換前端的說明。
時間戳引用
這個解決方案的關鍵在於提示工程和結構化輸出格式。在生成對使用者問題的回應時,LLM 被指示不僅要提供問題的答案(如果可能的話),還要以特定的方式引用其來源。
完整的提示可以在 GitHub 倉庫中查看,但這裡顯示了一個簡短的偽提示(為了簡潔):
你是一個智能的人工智慧,試圖根據檢索到的自動生成的轉錄內容回答問題。
以下是檢索到的轉錄塊,包含檔案名稱的元數據。每個塊都包括一個 <media_name> 和轉錄的行,每行以時間戳開始。
$$ 檢索到的轉錄塊 $$
你的回答應該是 JSON 格式,包括部分答案的列表,每個部分答案都有引用。引用應該包括來源檔案名稱和時間戳。這是使用者的問題:
$$ 使用者問題 $$
前端然後將 LLM 回應解析為固定的架構數據模型,使用 Pydantic BaseModels 描述:
from pydantic import BaseModel
class Citation(BaseModel):
“””來自轉錄的單一引用”””
media_name: str
timestamp: int
class PartialQAnswer(BaseModel):
“””完整答案的一部分,將與其他部分答案串接”””
partial_answer: str
citations: List[Citation]
class FullQAnswer(BaseModel):
“””包含引用和一個或多個部分答案的完整使用者查詢回應”””
answer: List[PartialQAnswer]
這種格式允許前端解析回應並顯示每個引用的按鈕,讓使用者回顧相關媒體片段。
部署細節
這個解決方案以一個 AWS 雲開發工具包 (AWS CDK) 堆疊的形式部署,該堆疊包含四個嵌套堆疊:
一個處理上傳媒體轉錄和跟蹤作業狀態的後端
一個處理設置 OpenSearch 無伺服器和亞馬遜基石知識庫的檢索增強生成 (RAG) 堆疊
一個建立亞馬遜 Cognito 授權的 REST API 和各種 Lambda 函數的 API 堆疊,以邏輯上分離前端和後端
一個由容器化 Streamlit 應用程式組成的前端堆疊,作為 ECS 集群中的負載平衡服務運行,並有一個連接到負載平衡器的 CloudFront 分發
先決條件
這個解決方案需要以下先決條件:
你需要有一個 AWS 帳戶和一個具有創建和管理此應用程式所需資源和組件的權限的 AWS 身份與訪問管理 (IAM) 角色和使用者。如果你沒有 AWS 帳戶,請參見如何創建和啟用新的亞馬遜網路服務帳戶?
你還需要請求訪問至少一個亞馬遜基石 LLM(用於生成問題的答案)和一個嵌入模型(用於查找與使用者問題語義相似的轉錄塊)。以下亞馬遜基石模型是預設的,但可以在應用程式部署時使用配置文件更改:
亞馬遜 Titan 嵌入 V2 – 文本
亞馬遜的 Nova Pro
你需要一個安裝了 AWS CDK 依賴項的 Python 環境。詳細說明請參見在 Python 中使用 AWS CDK。
在部署時需要 Docker 來構建 Streamlit 前端容器。
部署 AWS CDK 所需的最小 IAM 權限在 GitHub 倉庫的 ReVIEW/infra/minimal-iam-policy.json 文件中描述。確保部署堆疊的 IAM 使用者或角色擁有這些權限。
克隆倉庫
分叉倉庫,並克隆到你選擇的位置。例如:
編輯部署配置文件
可選地,編輯 infra/config.yaml 文件,以提供堆疊的描述性基本名稱。這個文件也是你可以選擇特定亞馬遜基石嵌入模型以進行語義檢索和 LLM 以生成回應的地方,並定義將上傳媒體檔案的轉錄內容攝取到知識庫的分塊策略。這個文件也是你可以重用現有亞馬遜 Cognito 使用者池的地方,如果你想用現有的使用者基礎來啟動你的應用程式。
部署 AWS CDK 堆疊
使用以下代碼部署 AWS CDK 堆疊:
你只需在每個 AWS 帳戶中使用上述命令一次。部署命令將部署父堆疊和四個嵌套堆疊。這個過程大約需要 20 分鐘完成。
當部署完成後,控制台螢幕上會打印出一個 CloudFront 分發 URL,形式為 xxx.cloudfront.net,以訪問應用程式。這個 URL 也可以在 AWS CloudFormation 控制台中找到,通過查找與配置文件中的值匹配的堆疊名稱,然後選擇輸出選項卡,找到與鍵 ReVIEWFrontendURL 相關的值。該 URL 將引導你到一個登錄畫面,如以下截圖所示。
創建亞馬遜 Cognito 使用者以訪問應用程式
要登錄運行中的網頁應用程式,你必須創建一個亞馬遜 Cognito 使用者。完成以下步驟:
在亞馬遜 Cognito 控制台中,導航到最近創建的使用者池。
在使用者管理的使用者部分,選擇創建使用者。
創建一個用戶名和密碼,以登錄到部署在帳戶中的 ReVIEW 應用程式。
當應用程式部署被銷毀(如清理部分所述)時,亞馬遜 Cognito 池將保留以保存使用者基礎。該池可以通過亞馬遜 Cognito 控制台手動完全刪除。
測試應用程式
通過在檔案上傳標籤上上傳一個或多個音訊或影片檔案來測試應用程式。該應用程式支持亞馬遜轉錄支持的媒體格式。如果你在尋找範例影片,可以考慮下載 TED 演講。上傳後,你將看到檔案出現在作業狀態標籤上。你可以在此標籤上跟蹤轉錄、後處理和知識庫同步步驟的處理進度。在至少一個檔案標記為完成後,你可以在與你的媒體聊天標籤上進行聊天。
分析你的媒體標籤允許你為單個上傳檔案創建和應用自定義 LLM 模板提示。例如,你可以創建一個基本摘要模板,或提取關鍵資訊的模板,並在這裡應用到你的上傳檔案。這個功能在這篇文章中沒有詳細描述。
清理
即使未使用,已部署的應用程式也會產生持續成本,例如來自 OpenSearch 無伺服器索引和搜索 OCU 最低值的成本。要刪除部署應用程式時創建的所有資源,請運行以下命令:
結論
這篇文章中提出的解決方案展示了一種強大的模式,用於加速影片和音訊審查流程,同時保持人類的監督。通過將亞馬遜基石中的人工智慧模型的力量與人類專業知識相結合,你可以創造出不僅提高生產力,還能在重要決策過程中保持人類判斷關鍵元素的工具。
我們鼓勵你探索這個完全開源的解決方案,根據你的具體用例進行調整,並提供你的使用經驗反饋。
如需專業協助,AWS 生成式人工智慧創新中心、AWS 專業服務和我們的 AWS 夥伴隨時為你提供幫助。
關於作者
David Kaleko 是 AWS 生成式人工智慧創新中心的高級應用科學家。
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!