Skip to content

[기능] Qdrant 지원 #204

@ehddnr301

Description

@ehddnr301

기능 설명 (Description)

  • 현재 Lang2SQL은 벡터 스토어로 FAISS, pgvector만을 지원하고 있으며, table_schema만 vector search 기반으로 검색되고 glossary 및 query example은 전체 로드(full scan) 방식으로 처리되고 있습니다.
  • 이 Issue에서는 Qdrant를 새로운 벡터DB backend로 추가하고, 카테고리별로 embedding vector와 payload를 분리하여 저장할 수 있는 구조를 도입하려고 합니다.
  • 특히 Qdrant의 payload(메타데이터) 기능을 적극 활용할 예정입니다.

왜 필요한가요? (Motivation / Use Case)

  • glossary, query example 데이터도 추가됨에 따라 기존 faiss는 관리에 복잡함을 불러오는것으로 보입니다.
  • semantic으로 찾고 싶은 정보는 vector에 반드시 들어가도록 변경하고, semantic 검색에는 필요 없지만 결과 해석에 필요한 건 payload로 빼는 것을 구현하면 좀 더 정확한 정보가 검색될것을 기대합니다.

제안하는 해결 방법 (Proposed Implementation)

  • Qdrant 추가 (Docker Compose)
    • 개발/로컬 환경에서 바로 사용할 수 있도록 docker-compose.yml에 Qdrant를 신규로 추가합니다.
  • 카테고리별 Collection 분리 및 Upsert 워크플로우 구현
    • Qdrant에 아래 3개 collection을 분리하여 저장합니다.
      • lang2sql_table_schema
      • lang2sql_glossary
      • lang2sql_query_example
      • Embedding 대상 최소화 + Payload 분리 저장
  • 각 collection은 가능한 동일한 Point 구조를 가지되 category별 payload schema를 달리합니다.
  • UI에 “Update” 버튼을 연동
    • 초기 버전 구현시 버튼 클릭 시 해당 category의 데이터를 전체 upsert(full refresh) 하도록 구현합니다.

추가 고려사항 (Additional Context)

  • 기존 faiss, pgvector 관련 코드를 전체 제거하는것을 고려합니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions