Nuclia는 모든 내부 및 외부 소스의 비정형 데이터를 자동으로 인덱싱하여 최적화된 검색 결과와 생성형 답변을 제공합니다. 비디오 및 오디오 전사, 이미지 콘텐츠 추출, 문서 파싱을 처리할 수 있습니다.
Nuclia Understanding API는 텍스트, 웹 페이지, 문서, 오디오/비디오 콘텐츠를 포함한 비정형 데이터 처리를 지원합니다. 필요한 경우 음성-텍스트 변환이나 OCR을 사용하여 모든 텍스트를 추출하고, 엔티티를 식별하며, 메타데이터, 임베디드 파일(PDF 내 이미지 등), 웹 링크를 추출합니다. 또한 콘텐츠의 요약을 제공합니다. Nuclia Understanding API를 사용하려면 Nuclia 계정이 필요합니다. https://nuclia.cloud에서 무료로 계정을 생성할 수 있으며, NUA key를 생성할 수 있습니다.
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 action을 사용하여 Nuclia Understanding API에 파일을 푸시할 수 있습니다. 처리가 비동기적으로 수행되므로 결과가 파일이 푸시된 순서와 다르게 반환될 수 있습니다. 따라서 결과를 해당 파일과 매칭하기 위해 id를 제공해야 합니다.
nua.run({"action": "push", "id": "1", "path": "./report.docx"})
nua.run({"action": "push", "id": "2", "path": "./interview.mp4"})
이제 JSON 형식의 결과를 얻을 때까지 루프에서 pull action을 호출할 수 있습니다.
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만 하면 결과가 pull될 때까지 기다립니다:
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_mlTrue로 설정된 경우에만)
  • 단락 및 문장 분할 (첫 번째 및 마지막 문자의 위치로 정의되며, 비디오 또는 오디오 파일의 경우 시작 시간 및 종료 시간 포함)
  • named entities: 사람, 날짜, 장소, 조직 등 (enable_mlTrue로 설정된 경우에만)
  • 링크
  • 썸네일
  • 임베디드 파일
  • 텍스트의 vector 표현 (enable_mlTrue로 설정된 경우에만)
참고: 생성된 파일(썸네일, 추출된 임베디드 파일 등)은 토큰으로 제공됩니다. /processing/download endpoint를 사용하여 다운로드할 수 있습니다. 또한 모든 레벨에서 속성이 특정 크기를 초과하면 다운로드 가능한 파일에 저장되고 문서에서 파일 포인터로 대체됩니다. 이는 {"file": {"uri": "JWT_TOKEN"}}로 구성됩니다. 규칙은 메시지 크기가 1000000자보다 크면 가장 큰 부분이 다운로드 가능한 파일로 이동된다는 것입니다. 먼저 압축 프로세스는 vector를 대상으로 합니다. 그것으로 충분하지 않으면 큰 필드 메타데이터를 대상으로 하고, 마지막으로 추출된 텍스트를 대상으로 합니다.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I