이 노트북은 LangChain Vectorize retriever를 사용하는 방법을 보여줍니다.
Vectorize는 더 빠르고 번거로움 없이 AI 앱을 구축할 수 있도록 도와줍니다. 데이터 추출을 자동화하고, RAG 평가를 사용하여 최적의 벡터화 전략을 찾으며, 비정형 데이터를 위한 실시간 RAG pipeline을 빠르게 배포할 수 있습니다. vector search index는 최신 상태로 유지되며, 기존 vector database와 통합되므로 데이터에 대한 완전한 제어권을 유지할 수 있습니다. Vectorize는 무거운 작업을 처리하여, 데이터 관리에 얽매이지 않고 강력한 AI 솔루션 구축에 집중할 수 있도록 합니다.

Setup

다음 단계에서는 Vectorize 환경을 설정하고 RAG pipeline을 생성합니다.

Vectorize 계정 생성 및 Access Token 받기

여기에서 무료 Vectorize 계정에 가입하세요 Access Token 섹션에서 access token을 생성하세요 organization ID를 수집하세요. 브라우저 URL에서 /organization/ 뒤의 UUID를 추출하세요

token과 organization ID 설정

import getpass

VECTORIZE_ORG_ID = getpass.getpass("Enter Vectorize organization ID: ")
VECTORIZE_API_TOKEN = getpass.getpass("Enter Vectorize API Token: ")

Installation

이 retriever는 langchain-vectorize package에 있습니다:
!pip install -qU langchain-vectorize

PDF 파일 다운로드

!wget "https://raw.githubusercontent.com/vectorize-io/vectorize-clients/refs/tags/python-0.1.3/tests/python/tests/research.pdf"

vectorize client 초기화

import vectorize_client as v

api = v.ApiClient(v.Configuration(access_token=VECTORIZE_API_TOKEN))

File Upload Source Connector 생성

import json
import os

import urllib3

connectors_api = v.ConnectorsApi(api)
response = connectors_api.create_source_connector(
    VECTORIZE_ORG_ID, [{"type": "FILE_UPLOAD", "name": "From API"}]
)
source_connector_id = response.connectors[0].id

PDF 파일 업로드

file_path = "research.pdf"

http = urllib3.PoolManager()
uploads_api = v.UploadsApi(api)
metadata = {"created-from-api": True}

upload_response = uploads_api.start_file_upload_to_connector(
    VECTORIZE_ORG_ID,
    source_connector_id,
    v.StartFileUploadToConnectorRequest(
        name=file_path.split("/")[-1],
        content_type="application/pdf",
        # add additional metadata that will be stored along with each chunk in the vector database
        metadata=json.dumps(metadata),
    ),
)

with open(file_path, "rb") as f:
    response = http.request(
        "PUT",
        upload_response.upload_url,
        body=f,
        headers={
            "Content-Type": "application/pdf",
            "Content-Length": str(os.path.getsize(file_path)),
        },
    )

if response.status != 200:
    print("Upload failed: ", response.data)
else:
    print("Upload successful")

AI Platform과 Vector Database에 연결

ai_platforms = connectors_api.get_ai_platform_connectors(VECTORIZE_ORG_ID)
builtin_ai_platform = [
    c.id for c in ai_platforms.ai_platform_connectors if c.type == "VECTORIZE"
][0]

vector_databases = connectors_api.get_destination_connectors(VECTORIZE_ORG_ID)
builtin_vector_db = [
    c.id for c in vector_databases.destination_connectors if c.type == "VECTORIZE"
][0]

Pipeline 구성 및 배포

pipelines = v.PipelinesApi(api)
response = pipelines.create_pipeline(
    VECTORIZE_ORG_ID,
    v.PipelineConfigurationSchema(
        source_connectors=[
            v.SourceConnectorSchema(
                id=source_connector_id, type="FILE_UPLOAD", config={}
            )
        ],
        destination_connector=v.DestinationConnectorSchema(
            id=builtin_vector_db, type="VECTORIZE", config={}
        ),
        ai_platform=v.AIPlatformSchema(
            id=builtin_ai_platform, type="VECTORIZE", config={}
        ),
        pipeline_name="My Pipeline From API",
        schedule=v.ScheduleSchema(type="manual"),
    ),
)
pipeline_id = response.data.id

tracing 설정 (선택사항)

개별 query에서 자동화된 tracing을 받으려면, 아래 주석을 해제하여 LangSmith API key를 설정할 수 있습니다:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"

Instantiation

from langchain_vectorize.retrievers import VectorizeRetriever

retriever = VectorizeRetriever(
    api_token=VECTORIZE_API_TOKEN,
    organization=VECTORIZE_ORG_ID,
    pipeline_id=pipeline_id,
)

Usage

query = "Apple Shareholders equity"
retriever.invoke(query, num_results=2)

API reference

모든 VectorizeRetriever 기능과 구성에 대한 자세한 문서는 API reference를 참조하세요.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I