Skip to content

Comments

Feat/keyword retriever#209

Merged
seyoung4503 merged 5 commits intomasterfrom
feat/keyword-retriever
Feb 22, 2026
Merged

Feat/keyword retriever#209
seyoung4503 merged 5 commits intomasterfrom
feat/keyword-retriever

Conversation

@seyoung4503
Copy link
Collaborator

@seyoung4503 seyoung4503 commented Feb 22, 2026

#️⃣ Issue Number

  • TBD

📝 요약(Summary)

  • v2의 첫 번째 실제 컴포넌트인 KeywordRetriever를 구현했습니다.
  • stdlib만으로 BM25 검색을 구현해 외부 의존성 없이 테이블 카탈로그 검색이
    가능합니다.
  • SequentialFlow(steps=[retriever]).run_query("...") 가 동작하는 end-to-end
    경로를 완성했습니다.

💬 To Reviewers (선택)

  • _bm25.py_extract_text 함수가 meta.tags: ["finance", "core"] 같은
    중첩 리스트를 재귀적으로 풀어내는 방식이 적절한지 확인 부탁드립니다.
  • KeywordRetrieverindex_fields 파라미터가 기본값을 교체(override)
    하는 방식으로 설계되었습니다. 기본값에 추가(extend) 하는 방식이 더 나을지
    의견 부탁드립니다.
  • src/lang2sql/core/ports.pyEmbeddingPort는 향후 VectorRetriever
    구현을 위한 placeholder입니다. 위치나 네이밍에 이견이 있으면 말씀해주세요.

PR Checklist

  • KeywordRetriever 14개 단위 테스트 추가
    (tests/test_components_keyword_retriever.py)
  • BM25 파라미터 k1=1.5, b=0.75 SPEC 준수 확인
  • BaseComponent 상속으로 hook 트레이싱 자동 적용 검증 (start/end/error
    이벤트)
  • SequentialFlow end-to-end 통합 테스트 포함
  • 외부 의존성 없음 (stdlib math, collections만 사용)

Changes

파일 설명
src/lang2sql/core/ports.py EmbeddingPort Protocol placeholder 추가
src/lang2sql/components/__init__.py components 패키지 초기화
src/lang2sql/components/retrieval/_bm25.py stdlib-only BM25 인덱스 내부 구현
src/lang2sql/components/retrieval/keyword.py KeywordRetriever 컴포넌트 구현
src/lang2sql/components/retrieval/__init__.py KeywordRetriever public export
tests/test_components_keyword_retriever.py 14개 단위 테스트

@seyoung4503 seyoung4503 merged commit d54d451 into master Feb 22, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant