Redpanda Connect 연동

Redpanda Connect 연동 (redpanda)

Redpanda Connect는 선언적(declarative)이고 데이터 종류에 구애받지 않는(data-agnostic) 스트리밍 서비스예요. 효율적이고 상태를 유지하지 않는(stateless) 처리 단계를 위해 설계됐어요. 백프레셔(back pressure)를 포함한 트랜잭션 기반 복원성(resiliency)을 제공하며, at-least-once 소스를 sink에 연결할 때 메시지를 전송 중에 영속화(persist)할 필요 없이 at-least-once 전달을 보장해요.

Connect 파이프라인은 YAML 파일로 설정돼요. 이 파일은 컴포넌트를 계층적으로 조직하는데, 각 섹션은 inputs, processors, outputs 같은 서로 다른 컴포넌트 타입을 나타내고, 각 섹션은 중첩된 하위 컴포넌트와 동적 값을 가질 수 있어요.

Qdrant Output 컴포넌트는 RedPanda 파이프라인에서 벡터 데이터를 Qdrant 컬렉션으로 스트리밍할 수 있게 해줘요.

출처: Qdrant 공식 문서 — redpanda

예시 (Example)

inputs와 processors를 설정한 뒤, output 구성의 예시는 다음과 같아요.

input:
    # https://docs.redpanda.com/redpanda-connect/components/inputs/about/

pipeline:
  processors:
    # https://docs.redpanda.com/redpanda-connect/components/processors/about/

output:
  label: "qdrant-output"
  qdrant:
    max_in_flight: 64
    batching:
      count: 8
    grpc_host: xyz-example.eu-central.aws.cloud.qdrant.io:6334
    api_token: "<provide-your-own-key>"
    tls:
      enabled: true
    #   skip_cert_verify: false
    #   enable_renegotiation: false
    #   root_cas: ""
    #   root_cas_file: ""
    #   client_certs: []
    collection_name: "<collection_name>"
    id: root = uuid_v4()
    vector_mapping: 'root = {"some_dense": this.vector, "some_sparse": {"indices": [23,325,532],"values": [0.352,0.532,0.532]}}'
    payload_mapping: 'root = {"field": this.value, "field_2": 987}'

여기서 눈여겨볼 부분이 몇 가지 있어요.

  • grpc_host — Qdrant의 gRPC 엔드포인트를 지정해요.
  • api_token — Qdrant 인스턴스에 접근할 토큰을 넣어요.
  • collection_name — 벡터가 쌓일 대상 컬렉션 이름이에요.
  • vector_mapping — 소스 메시지의 필드를 Qdrant의 벡터 표현으로 매핑해요. 위 예시에서는 dense 벡터(some_dense)와 sparse 벡터(some_sparse)를 함께 만들고 있어요.
  • payload_mapping — 메시지의 값을 payload로 매핑해요.

더 알아보기 (Learn more)