跳到主要內容
Open In ColabOpen on GitHub

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 個字元,最大的部分將被移動到可下載的檔案。首先,壓縮程序將以向量為目標。如果這還不夠,它將以大型欄位元數據為目標,最後它將以擷取的文字為目標。


此頁面是否對您有幫助?