Skip to main content
Nuclia 可自动为来自任何内部和外部来源的非结构化数据建立索引,提供优化的搜索结果和生成式答案。它能够处理视频和音频转录、图像内容提取以及文档解析。
Nuclia Understanding API 支持处理非结构化数据,包括文本、网页、文档和音视频内容。它能提取所有文本(必要时使用语音转文字或 OCR),识别实体,还能提取元数据、嵌入文件(如 PDF 中的图片)和网页链接,并提供内容摘要。 要使用 Nuclia Understanding API,您需要拥有一个 Nuclia 账户。您可以在 https://nuclia.cloud 免费注册,然后创建一个 NUA 密钥
pip install -qU  protobuf
pip install -qU  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 时)
注意: 生成的文件(缩略图、提取的嵌入文件等)以 token 形式提供。您可以通过 /processing/download 端点 下载它们。 此外,在任何层级,如果某个属性超过一定大小,它将被放入可下载文件中,并在文档中用文件指针替换,格式为 {"file": {"uri": "JWT_TOKEN"}}。规则是:如果消息大小超过 1000000 个字符,最大的部分将被移至可下载文件。首先压缩过程会针对向量进行处理,如果仍不够,则针对大字段元数据,最后针对提取的文本。