UnstructuredFileConverter
UnstructuredFileConverter
텍스트 파일과 디렉토리를 하나의 문서로 변환해 주는 컴포넌트예요. 다양한 파일 형식을 다루는 인덱싱 파이프라인의 시작점으로 쓰기 좋아요.
파이프라인에서 가장 흔한 위치: PreProcessor 앞, 또는 인덱싱 파이프라인의 맨 앞
필수 run 변수: paths — 경로 리스트들의 합집합
출력 변수: documents — 문서 리스트
API 레퍼런스: Unstructured
GitHub 링크: https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/unstructured
패키지 이름: unstructured-fileconverter-haystack
출처: 문서
본문
개요 (Overview)
UnstructuredFileConverter는 Unstructured API를 사용해 파일과 디렉토리를 문서로 변환해요.
Unstructured은 LLM을 위한 ETL을 수행하는 여러 도구를 제공해요. UnstructuredFileConverter는 방대한 파일 형식에서 텍스트와 기타 정보를 추출하는 Unstructured API를 호출해요.
이 Converter는 Unstructured가 반환한 요소들로 문서를 만드는 여러 모드를 지원해요:
"one-doc-per-file": 파일마다 Haystack 문서 하나. 모든 요소가 하나의 텍스트 필드로 합쳐져요.
"one-doc-per-page": 페이지마다 Haystack 문서 하나. 한 페이지의 모든 요소가 하나의 텍스트 필드로 합쳐져요.
"one-doc-per-element": 요소마다 Haystack 문서 하나. 각 요소가 Haystack 문서로 변환돼요.
사용법 (Usage)
UnstructuredFileConverter 컴포넌트를 쓰려면 Unstructured 통합을 설치해요:
pip install unstructured-fileconverter-haystack
Unstructured API에는 무료 버전과 유료 버전이 있어요: Free Unstructured API와 Unstructured Serverless API.
Free Unstructured API:
API URL: https://api.unstructured.io/general/v0/general
이 버전은 무료지만 일정한 제한이 있어요.
Unstructured Serverless API:
유료 버전에 가입하면 Unstructured 계정에서 나만의 고유 API URL을 찾을 수 있어요. 이건 Unstructured의 풀 유료 티어예요.
두 티어에 대한 자세한 내용은 Unstructured FAQ를 참고하세요.
❗️ 무료 버전과 유료 버전의 API 키는 서로 다르며 바꿔 쓸 수 없어요.
어느 티어를 선택하든 Unstructured API 키를 환경 변수 UNSTRUCTURED_API_KEY로 설정하는 걸 권장해요:
export UNSTRUCTURED_API_KEY=your_api_key
단독으로 사용하기 (On its own)
import os
from haystack_integrations.components.converters.unstructured import (
UnstructuredFileConverter,
)
converter = UnstructuredFileConverter()
documents = converter.run(paths=["a/file/path.pdf", "a/directory/path"])["documents"]
파이프라인 안에서 사용하기 (In a pipeline)
import os
from haystack import Pipeline
from haystack.components.writers import DocumentWriter
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.converters.unstructured import (
UnstructuredFileConverter,
)
document_store = InMemoryDocumentStore()
indexing = Pipeline()
indexing.add_component("converter", UnstructuredFileConverter())
indexing.add_component("writer", DocumentWriter(document_store))
indexing.connect("converter", "writer")
indexing.run({"converter": {"paths": ["a/file/path.pdf", "a/directory/path"]}})
Docker 사용하기 (With Docker)
Docker를 통해 UnstructuredFileConverter를 쓰려면 먼저 Unstructured Docker 컨테이너를 설정해요:
docker run -p 8000:8000 -d --rm --name unstructured-api quay.io/unstructured-io/unstructured-api:latest --port 8000 --host 0.0.0.0
컴포넌트를 초기화할 때 localhost URL을 지정해요:
from haystack_integrations.components.converters.unstructured import (
UnstructuredFileConverter,
)
converter = UnstructuredFileConverter(
api_url="http://localhost:8000/general/v0/general",
)