Nuclia 理解
Nuclia 自動為您的非結構化資料建立索引,來源可以是任何內部和外部來源,並提供最佳化的搜尋結果和生成式回答。它可以處理影片和音訊轉錄、圖像內容擷取和文件剖析。
Nuclia Understanding API
支援處理非結構化資料,包括文字、網頁、文件和音訊/影片內容。它可以擷取所有文字(在任何位置,必要時使用語音轉文字或 OCR),它可以識別實體,還可以擷取元數據、嵌入式檔案(例如 PDF 中的圖像)和網頁連結。它還提供內容摘要。
若要使用 Nuclia Understanding API
,您需要擁有 Nuclia
帳戶。您可以在 https://nuclia.cloud 免費建立一個帳戶,然後建立 NUA 金鑰。
%pip install --upgrade --quiet protobuf
%pip install --upgrade --quiet nucliadb-protos
import os
os.environ["NUCLIA_ZONE"] = "<YOUR_ZONE>" # e.g. europe-1
os.environ["NUCLIA_NUA_KEY"] = "<YOUR_API_KEY>"
from langchain_community.tools.nuclia import NucliaUnderstandingAPI
nua = NucliaUnderstandingAPI(enable_ml=False)
您可以使用 push
動作將檔案推送至 Nuclia Understanding API。由於處理是以非同步方式完成,因此結果傳回的順序可能與檔案推送的順序不同。這就是為什麼您需要提供 id
,以便將結果與對應的檔案進行比對。
nua.run({"action": "push", "id": "1", "path": "./report.docx"})
nua.run({"action": "push", "id": "2", "path": "./interview.mp4"})
您現在可以在迴圈中呼叫 pull
動作,直到取得 JSON 格式的結果。
import time
pending = True
data = None
while pending:
time.sleep(15)
data = nua.run({"action": "pull", "id": "1", "path": None})
if data:
print(data)
pending = False
else:
print("waiting...")
您也可以在 async
模式中一步完成,您只需要執行推送,它就會等到結果被提取。
import asyncio
async def process():
data = await nua.arun(
{"action": "push", "id": "1", "path": "./talk.mp4", "text": None}
)
print(data)
asyncio.run(process())
已檢索資訊
Nuclia 傳回以下資訊
- 檔案元數據
- 擷取的文字
- 巢狀文字(例如嵌入圖像中的文字)
- 摘要(僅當
enable_ml
設定為True
時) - 段落和句子分割(由其第一個和最後一個字元的位置定義,加上影片或音訊檔案的開始時間和結束時間)
- 命名實體:人物、日期、地點、組織等(僅當
enable_ml
設定為True
時) - 連結
- 縮圖
- 嵌入式檔案
- 文字的向量表示(僅當
enable_ml
設定為True
時)
注意
產生的檔案(縮圖、擷取的嵌入式檔案等)以權杖形式提供。您可以使用 /processing/download
端點下載它們。
此外,在任何層級,如果屬性超過特定大小,它將被放入可下載的檔案中,並在文件中替換為檔案指標。這將包含 {"file": {"uri": "JWT_TOKEN"}}
。規則是,如果訊息大小大於 1000000 個字元,最大的部分將被移動到可下載的檔案。首先,壓縮程序將以向量為目標。如果這還不夠,它將以大型欄位元數據為目標,最後它將以擷取的文字為目標。