Skip to main content
Open In Colab在 GitHub 上打开

Nuclia 理解

Nuclia 会自动为来自任何内部和外部来源的非结构化数据编制索引,从而提供优化的搜索结果和生成式答案。它可以处理视频和音频转录、图像内容提取和文档解析。

Nuclia Understanding API支持非结构化数据的处理,包括文本、网页、文档和音频/视频内容。它可以提取所有文本(如果需要,使用语音转文本或 OCR),它识别实体,它还提取元数据、嵌入文件(如 PDF 中的图像)和 Web 链接。它还提供了内容的摘要。

要使用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行动。由于处理是异步完成的,因此返回结果的顺序可能与推送文件的顺序不同。这就是为什么您需要提供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模式中,你只需要做一个 push,它会一直等到拉取结果:

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)
  • 段落和句子拆分(由其第一个和最后一个字符的位置以及视频或音频文件的开始时间和结束时间定义)
  • 命名实体:people、dates、places、organizations 等(仅当enable_ml设置为True)
  • 链接
  • 缩略图
  • 嵌入文件
  • 文本的向量表示形式(仅当enable_ml设置为True)

注意:

生成的文件(缩略图、提取的嵌入文件等)作为令牌提供。您可以使用/processing/download端点.

此外,在任何级别,如果属性超过特定大小,它将被放入可下载文件中,并在文档中被文件指针替换。这将包括{"file": {"uri": "JWT_TOKEN"}}.规则是,如果消息的大小大于 1000000 个字符,则最大的部分将被移动到可下载文件中。首先,压缩过程将以向量为目标。如果这还不够,它将以大字段元数据为目标,最后它将以提取的文本为目标。