Skip to content

Latest commit

ย 

History

History
374 lines (260 loc) ยท 15.5 KB

File metadata and controls

374 lines (260 loc) ยท 15.5 KB

Lang2SQL

PseudoLab Discord Community Stars Badge Forks Badge Pull Requests Badge Issues Badge GitHub contributors PyPI version PyPI downloads Hits

์šฐ๋ฆฌ๋Š” ํ•จ๊ป˜ ์ฝ”๋“œ์™€ ์•„์ด๋””์–ด๋ฅผ ๋‚˜๋ˆ„๋ฉฐ ๋” ๋‚˜์€ ๋ฐ์ดํ„ฐ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์—ฌ์ •์„ ๋– ๋‚ฉ๋‹ˆ๋‹ค. ๐ŸŒ๐Ÿ’ก

"๋ชจ๋‘๊ฐ€ ๋” ๊ฐ€์น˜ ์žˆ๋Š” ์ผ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค."


๐Ÿš€ Lang2SQL์ด๋ž€?

Lang2SQL์€ ์ž์—ฐ์–ด ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”๋œ SQL ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. LangGraph์™€ DataHub ํ†ตํ•ฉ์œผ๋กœ ๊ตฌ์ถ•๋˜์–ด, ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ ๊นŠ์€ ์ง€์‹ ์—†์ด๋„ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์ž๋“ค์ด ํšจ์œจ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ—ฃ๏ธ ์ž์—ฐ์–ด๋ฅผ SQL๋กœ ๋ณ€ํ™˜: ์ผ์ƒ ์–ธ์–ด๋ฅผ ์ •ํ™•ํ•œ SQL ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜
  • ๐Ÿ“Š ์Šค๋งˆํŠธ ํ…Œ์ด๋ธ” ๋ฐœ๊ฒฌ: ์˜๋ฏธ๋ก ์  ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ จ ํ…Œ์ด๋ธ”์„ ์ž๋™์œผ๋กœ ์ฐพ๊ธฐ
  • ๐Ÿ” ์Šคํ‚ค๋งˆ ์ธ์‹: DataHub ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์ •ํ™•ํ•œ ์ปฌ๋Ÿผ ๋งคํ•‘
  • ๐Ÿ› ๏ธ ์›น ์ธํ„ฐํŽ˜์ด์Šค: ๋Œ€ํ™”ํ˜• Streamlit ์•ฑ์„ ํ†ตํ•œ ์‚ฌ์šฉ
  • ๐Ÿ“ˆ ์‹œ๊ฐํ™”: ์ƒ์„ฑ๋œ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์–‘ํ•œ ์ฐจํŠธ์™€ ๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•…
  • ๐Ÿ—„๏ธ ์œ ์—ฐํ•œ VectorDB: FAISS(๋กœ์ปฌ)์™€ pgvector(PostgreSQL) ์ค‘ ์„ ํƒ ๊ฐ€๋Šฅํ•œ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์›

๐Ÿค” ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ

์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํŒ€ ๊ตฌ์„ฑ์›๋“ค์ด ์ž์ฃผ ์ง๋ฉดํ•˜๋Š” ๋ฌธ์ œ๋“ค:

  • ๐Ÿคฏ "ํ…Œ์ด๋ธ”์ด ๋„ˆ๋ฌด ๋งŽ์•„! ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์ง€?"
  • ๐Ÿง "์ด JOIN์ด ๋งž๋‚˜์š”?"
  • ๐ŸŒ "์ด ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ๊ดœ์ฐฎ์„๊นŒ์š”?"
  • ๐Ÿ˜ฐ "์–ด๋–ป๊ฒŒ ์˜๋ฏธ์žˆ๋Š” ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ถ”์ถœํ•˜์ง€?"

Lang2SQL์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•˜์—ฌ ์ด๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค:

  • โœ… ์ž์—ฐ์–ด ์ž…๋ ฅ โ†’ ํ…Œ์ด๋ธ” ์ถ”์ฒœ
  • โœ… ์ ์ ˆํ•œ ์ปฌ๋Ÿผ ์กฐํ•ฉ์œผ๋กœ ์ž๋™ SQL ์ƒ์„ฑ
  • โœ… ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๊ธฐ๋ฐ˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”

๐Ÿ“ฆ ์„ค์น˜ ๋ฐฉ๋ฒ•

๋น ๋ฅธ ์„ค์น˜

# pip
pip install lang2sql

# uv
uv venv --python 3.11
source .venv/bin/activate
uv add lang2sql

์†Œ์Šค์—์„œ ์„ค์น˜

# ์†Œ์Šค ํด๋ก 
git clone https://github.com/CausalInferenceLab/lang2sql.git
cd lang2sql

# (๊ถŒ์žฅ) uv ์‚ฌ์šฉ
# uv ์„ค์น˜๊ฐ€ ๋˜์–ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜ ๋‘ ์ค„๋กœ ๊ฐœ๋ฐœ ๋ชจ๋“œ ์„ค์น˜
uv venv --python 3.11
source .venv/bin/activate
uv pip install -e .

# (๋Œ€์•ˆ) pip ์‚ฌ์šฉ
python -m venv .venv
source .venv/bin/activate
pip install -e .

๐Ÿ› ๏ธ ์‚ฌ์šฉ๋ฒ•

๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค

Streamlit ์›น ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰:

lang2sql run-streamlit

์‚ฌ์šฉ์ž ์ •์˜ ํฌํŠธ๋กœ ์‹คํ–‰:

lang2sql run-streamlit -p 8888

์ฐธ๊ณ :

  • Streamlit ์„œ๋ฒ„๋Š” 0.0.0.0 ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋˜์–ด ์™ธ๋ถ€์—์„œ ์ ‘์† ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • --datahub_server ์˜ต์…˜์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(deprecated). DataHub ์„ค์ •์€ UI์˜ ์„ค์ • > ๋ฐ์ดํ„ฐ ์†Œ์Šค ํƒญ์—์„œ ๊ด€๋ฆฌํ•˜์„ธ์š”.

Graph Builder ํŽ˜์ด์ง€

Streamlit ์•ฑ์€ ๋ฉ€ํ‹ฐ ํŽ˜์ด์ง€ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ขŒ์ธก ๋„ค๋น„๊ฒŒ์ด์…˜์—์„œ "Graph Builder" ํŽ˜์ด์ง€๋ฅผ ์—ด์–ด LangGraph ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ”„๋ฆฌ์…‹ ์„ ํƒ: "๊ธฐ๋ณธ" ๋˜๋Š” "ํ™•์žฅ"
  • ์ปค์Šคํ…€ ์˜ต์…˜: PROFILE_EXTRACTION, CONTEXT_ENRICHMENT, QUERY_MAKER ํฌํ•จ ์—ฌ๋ถ€ ํ† ๊ธ€
  • ์„ ํƒ์ด ๋ฐ”๋€Œ๋ฉด ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฆ‰์‹œ ์ปดํŒŒ์ผ๋˜์–ด ์„ธ์…˜์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค
  • "์„ธ์…˜ ๊ทธ๋ž˜ํ”„ ์ƒˆ๋กœ๊ณ ์นจ" ๋ฒ„ํŠผ์œผ๋กœ ์ˆ˜๋™ ์žฌ์ ์šฉ ๊ฐ€๋Šฅ
  • QUERY_MAKER๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰ ์ •๋ณด๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค

VectorDB ์„ ํƒ

์ฐธ๊ณ : CLI ๋ ˆ๋ฒจ์˜ --vectordb-type ๋ฐ --vectordb-location ์˜ต์…˜์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(deprecated). Streamlit ์‹คํ–‰ ์‹œ VectorDB ์„ค์ •์€ UI์˜ ์„ค์ • > ๋ฐ์ดํ„ฐ ์†Œ์Šค ํƒญ์—์„œ ๊ด€๋ฆฌํ•˜์„ธ์š”.

query ๋ช…๋ น์–ด์—์„œ๋Š” VectorDB ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# FAISS ์‚ฌ์šฉ (๊ธฐ๋ณธ๊ฐ’)
lang2sql query "์งˆ๋ฌธ" --vectordb-type faiss

# pgvector ์‚ฌ์šฉ
lang2sql query "์งˆ๋ฌธ" --vectordb-type pgvector

# ์œ„์น˜ ์ง€์ • ์˜ˆ์‹œ
# FAISS: ์ธ๋ฑ์Šค ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ ์ง€์ •
lang2sql query "์งˆ๋ฌธ" --vectordb-type faiss --vectordb-location ./dev/table_info_db

# pgvector: ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ์ง€์ •
lang2sql query "์งˆ๋ฌธ" --vectordb-type pgvector --vectordb-location "postgresql://user:pass@host:5432/db"

์ฐธ๊ณ : DataHub ์—†์ด๋„ ๋ฏธ๋ฆฌ ์ค€๋น„๋œ VectorDB(FAISS ๋””๋ ‰ํ† ๋ฆฌ ํ˜น์€ pgvector ์ปฌ๋ ‰์…˜)๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ค€๋น„ ๋ฐฉ๋ฒ•์€ DataHub ์—†์ด ์‹œ์ž‘ํ•˜๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ฒ˜์Œ ์‹œ์ž‘ํ•˜๊ธฐ (DataHub ์—†์ด)

ํŠœํ† ๋ฆฌ์–ผ ๋ณธ๋ฌธ์ด ๊ธธ์–ด์ ธ ๋ณ„๋„ ๋ฌธ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ž์—ฐ์–ด ์ฟผ๋ฆฌ ์‹คํ–‰

# ๊ธฐ๋ณธ ์‚ฌ์šฉ (FAISS, clickhouse, ๊ธฐ๋ณธ ๊ฒ€์ƒ‰๊ธฐ)
lang2sql query "๊ณ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ๋‹ˆํฌํ•œ ์œ ์ € ์ˆ˜๋ฅผ ์นด์šดํŠธํ•˜๋Š” ์ฟผ๋ฆฌ"

# ์˜ต์…˜ ์‚ฌ์šฉ ์˜ˆ์‹œ
lang2sql query "๊ณ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ๋‹ˆํฌํ•œ ์œ ์ € ์ˆ˜๋ฅผ ์นด์šดํŠธํ•˜๋Š” ์ฟผ๋ฆฌ" \
  --database-env clickhouse \
  --retriever-name ๊ธฐ๋ณธ \
  --top-n 5 \
  --device cpu \
  --use-enriched-graph \
  --vectordb-type faiss \
  --vectordb-location ./dev/table_info_db

# pgvector ์‚ฌ์šฉ ์˜ˆ์‹œ
lang2sql query "๊ณ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ๋‹ˆํฌํ•œ ์œ ์ € ์ˆ˜๋ฅผ ์นด์šดํŠธํ•˜๋Š” ์ฟผ๋ฆฌ" \
  --vectordb-type pgvector \
  --vectordb-location "postgresql://postgres:postgres@localhost:5432/postgres"

์ฃผ์š” ์˜ต์…˜ ์„ค๋ช…:

  • --database-env: ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ (๊ธฐ๋ณธ๊ฐ’: clickhouse)
  • --retriever-name: ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰๊ธฐ ์ด๋ฆ„ (๊ธฐ๋ณธ๊ฐ’: ๊ธฐ๋ณธ)
  • --top-n: ๊ฒ€์ƒ‰๋œ ์ƒ์œ„ ํ…Œ์ด๋ธ” ์ˆ˜ ์ œํ•œ (๊ธฐ๋ณธ๊ฐ’: 5)
  • --device: LLM ์‹คํ–‰์— ์‚ฌ์šฉํ•  ๋””๋ฐ”์ด์Šค (๊ธฐ๋ณธ๊ฐ’: cpu)
  • --use-enriched-graph: ํ™•์žฅ๋œ ๊ทธ๋ž˜ํ”„(ํ”„๋กœํŒŒ์ผ ์ถ”์ถœ + ์ปจํ…์ŠคํŠธ ๋ณด๊ฐ•) ์‚ฌ์šฉ ์—ฌ๋ถ€
  • --vectordb-type: ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํƒ€์ž… ("faiss" ๋˜๋Š” "pgvector", ๊ธฐ๋ณธ๊ฐ’: faiss)
  • --vectordb-location: VectorDB ์œ„์น˜ (FAISS: ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ, pgvector: ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด)

ํ™˜๊ฒฝ ์„ค์ •

  • .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์„ค์ •์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ์‹œ ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด ์ฐธ์กฐ)
  • ๋˜๋Š” CLI ์˜ต์…˜์œผ๋กœ ํ™˜๊ฒฝ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
    • --env-file-path: ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŒŒ์ผ ๊ฒฝ๋กœ ์ง€์ •
    • --prompt-dir-path: ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ(.md) ๋””๋ ‰ํ† ๋ฆฌ ์ง€์ •
    • --datahub_server: [Deprecated] DataHub GMS ์„œ๋ฒ„ URL ์ง€์ •. ์ด์ œ๋Š” UI์˜ ์„ค์ • > ๋ฐ์ดํ„ฐ ์†Œ์Šค ํƒญ์—์„œ ๊ด€๋ฆฌํ•˜์„ธ์š”.

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜

Lang2SQL์€ LangGraph๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค๋‹จ๊ณ„ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

  1. ๐Ÿ“ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ: ์‚ฌ์šฉ์ž ์˜๋„ ํŒŒ์‹ฑ ๋ฐ ํ•ต์‹ฌ ์—”ํ‹ฐํ‹ฐ ์ถ”์ถœ
  2. ๐Ÿ” ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰: ์˜๋ฏธ๋ก ์  ์œ ์‚ฌ์„ฑ์„ ์‚ฌ์šฉํ•œ ๊ด€๋ จ ํ…Œ์ด๋ธ” ์ฐพ๊ธฐ (Vector Search)
  3. โš™๏ธ SQL ์ƒ์„ฑ: ์ตœ์ ํ™”๋œ SQL ์ฟผ๋ฆฌ ์ƒ์„ฑ
  4. ๐Ÿš€ ์ฟผ๋ฆฌ ์‹œ๊ฐํ™”: ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐํ™” ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿง‘โ€๐Ÿ’ป ๊ธฐ์ˆ  ์Šคํƒ

  • LangGraph: LLM ์›Œํฌํ”Œ๋กœ์šฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
  • DataHub: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐ ํ™œ์šฉ
  • Streamlit: ๋Œ€ํ™”ํ˜• ์›น ์ธํ„ฐํŽ˜์ด์Šค

๐ŸŒŸ ๊ธฐ์—ฌ๊ฐ€ ํ•„์š”ํ•œ ์˜์—ญ (Help!)

Containerization

  • Docker๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๊ณ , pip install lang2sql ์„ค์น˜ ํ›„ ๋‹จ์ผ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ๋ฐ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ๊นŒ์ง€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

Agentic ์•„ํ‚คํ…์ฒ˜ ๊ฐœ๋ฐœ

  • ์ฟผ๋ฆฌ ์ƒ์„ฑ ๊ณผ์ •์„ ์—์ด์ „ํ‹ฑํ•˜๊ฒŒ ๊ฐœ์„ ํ•˜์—ฌ ๋”์šฑ ์ง€๋Šฅ์ ์ด๊ณ  ์ž์œจ์ ์ธ SQL ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋””์Šค์ปค๋ฒ„๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Datahub ํ†ตํ•ฉ ๊ฐ•ํ™”

  • ํ˜„์žฌ Datahub์˜ Glossary์™€ ์ฟผ๋ฆฌ ์˜ˆ์‹œ๋ฅผ ์ฝ”๋“œ๋กœ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌ ์ƒ์„ฑ ๊ณผ์ •์— ๋”์šฑ ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ†ตํ•ฉํ•˜์—ฌ ์ปจํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ์ •ํ™•ํ•œ SQL ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

VectorDB ์œ ์—ฐ์„ฑ ๊ฐœ์„ 

  • ํ˜„์žฌ๋Š” Datahub๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ์— FAISS VectorDB๋ฅผ ์ƒ์„ฑํ•ด์•ผ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
  • ์ด ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถฐ์„œ Datahub ์—†์ด๋„ ๊ธฐ์กด์— ์ค€๋น„๋œ VectorDB๋งŒ ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง / ๋กœ๊น… ๊ฐ•ํ™”

  • ํ”„๋กœ์ ํŠธ ์‚ฌ์šฉ ํŒจํ„ด๊ณผ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์ƒ์„ธํ•œ ๋กœ๊น… ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ง€์†์ ์ธ ๊ฐœ์„ ์ด ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋ฌธ์„œํ™” ๊ฐ•ํ™”

  • ํ”„๋กœ์ ํŠธ ๊ธฐ์—ฌ ์žฅ๋ฒฝ์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ๋ฌธ์„œํ™” ์ž‘์—…์ž…๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž ๊ฐ€์ด๋“œ, ํŠœํ† ๋ฆฌ์–ผ ๋“ฑ์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ธฐ์—ฌ์ž๋“ค์ด ์‰ฝ๊ฒŒ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์กฐ์„ฑํ•ฉ๋‹ˆ๋‹ค.

LLM ํ”„๋ก ํŠธ์—์„œ ๋ถ„๋ฆฌํ•˜๊ธฐ

ํ”„๋ŸฐํŠธ์—์„œ๋Š” LLM ํ˜ธ์ถœยทํ‚ค๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‚ด๋ถ€ ๋ฐฑ์—”๋“œ API๋กœ ์œ„์ž„ํ•ด ๋ณด์•ˆยท๊ถŒํ•œยท๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ค‘์•™ํ™”ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์—ฌ๋Ÿฌ๋ถ„์ด ๋„์šธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค:

๐Ÿ”ง ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

  1. ์ €์žฅ์†Œ ํฌํฌํ•˜๊ธฐ
  2. ํฌํฌ ํด๋ก : git clone https://github.com/YOUR_USERNAME/lang2sql.git
  3. ์˜์กด์„ฑ ์„ค์น˜: pip install -r requirements.txt
  4. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ: git checkout -b feature/amazing-feature
  5. ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹: git commit -m 'Add amazing feature'
  6. ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ: git push origin feature/amazing-feature
  7. Pull Request ์—ด๊ธฐ

๐Ÿ› ์ด์Šˆ ์‹ ๊ณ 

๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ ์š”์ฒญ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ๋‹ค์Œ ์ •๋ณด์™€ ํ•จ๊ป˜ ์ด์Šˆ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”:

  • ๋ฌธ์ œ/๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์„ค๋ช…
  • ์žฌํ˜„ ๋‹จ๊ณ„ (๋ฒ„๊ทธ์˜ ๊ฒฝ์šฐ)
  • ์˜ˆ์ƒ ๋™์ž‘ vs ์‹ค์ œ ๋™์ž‘
  • ํ™˜๊ฒฝ ์„ธ๋ถ€์‚ฌํ•ญ

๐Ÿ“‹ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ

  • pre-commit ํ™œ์„ฑํ™”
  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
  • ํ•„์š”์‹œ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
  • ์›์ž์ ์ด๊ณ  ์ž˜ ์„ค๋ช…๋œ ์ปค๋ฐ‹ ์œ ์ง€

๐ŸŽ“ ํ•™์Šต ์ž๋ฃŒ


๐Ÿ† Our Team

Role Name Skills Interests
Project Manager ์ด๋™์šฑ Python LLM, Open Source, Causal Inference
AI Engineer ๋ฌธ์ฐฌ๊ตญ Python LLM, Agentic RAG, Open Source
Data Engineer ๋ฐ•๊ฒฝํƒœ Python LLM-driven Data Engineering
AI Engineer ์†๋ด‰๊ท  Python LLM, RAG, AI Planning
Data Scientist ์•ˆ์žฌ์ผ Python LLM, Data Analysis, RAG
ML Engineer ์ดํ˜ธ๋ฏผ Python Multi-Agent Systems
AI Engineer ์ตœ์„ธ์˜ Python LLM, RAG, Multi-Agent
Full-Stack Developer ํ™ฉ์œค์ง„ NextJs React LLM Orchestration
AI Engineer ๊น€๊ฒฝ์„œ Python LLM, FinNLP, FDS, RAG
Data Engineer ํ™์ง€์˜ Python LLM, Data Engineering
Data Operator ์ดํ™”๋ฆผ Python LLM, Data Engineering

๐Ÿš€ ๋ฐฐํฌ ๋ฐ ๋ฆด๋ฆฌ์Šค

์ˆ˜๋™ ๋นŒ๋“œ

uv build
UV_PUBLISH_TOKEN=$PYPI_API_TOKEN uv publish --token $UV_PUBLISH_TOKEN

์ž๋™ ๋ฐฐํฌ(GitHub Actions)

์‚ฌ์ „ ์ค€๋น„: GitHub Secrets์— PYPI_API_TOKEN ๋“ฑ๋ก

# 1) ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ
#   - ๋ฒ„์ „ ํŒŒ์ผ: version.py ์˜ __version__ = "X.Y.Z"
git add version.py
git commit -m "chore: bump version to X.Y.Z"

# 2) ํƒœ๊ทธ ์ƒ์„ฑ/ํ‘ธ์‹œ (v* ํ˜•์‹์ด ํŠธ๋ฆฌ๊ฑฐ)
git tag vX.Y.Z
git push origin HEAD
git push origin vX.Y.Z

์„ค๋ช…: v* ํƒœ๊ทธ๊ฐ€ ํ‘ธ์‹œ๋˜๋ฉด .github/workflows/pypi-release.yml์ด ์‹คํ–‰๋˜์–ด uv๋กœ ๋นŒ๋“œ/๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

TestPyPI๋กœ ์‚ฌ์ „ ๊ฒ€์ฆ(์„ ํƒ)

uv build
UV_PUBLISH_TOKEN=$TEST_PYPI_API_TOKEN \
  uv publish --repository-url https://test.pypi.org/legacy/ --token $UV_PUBLISH_TOKEN

๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง

Lang2SQL์€ ๊ฐ€์งœ์—ฐ๊ตฌ์†Œ์˜ ์ธ๊ณผ์ถ”๋ก ํŒ€์—์„œ ๊ฐœ๋ฐœ์ค‘์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.


๐Ÿ“„ ๋ผ์ด์„ ์Šค


๐ŸŒ ๊ฐ€์งœ์—ฐ๊ตฌ์†Œ ์†Œ๊ฐœ

๊ฐ€์งœ์—ฐ๊ตฌ์†Œ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ AI ๊ธฐ์ˆ  ๋ฐœ์ „์— ์ค‘์ ์„ ๋‘” ๋น„์˜๋ฆฌ ์กฐ์ง์ž…๋‹ˆ๋‹ค. ๊ณต์œ , ๋™๊ธฐ๋ถ€์—ฌ, ๊ทธ๋ฆฌ๊ณ  ํ˜‘์—…์˜ ๊ธฐ์จ์ด๋ผ๋Š” ํ•ต์‹ฌ ๊ฐ€์น˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์˜ํ–ฅ๋ ฅ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

์ „ ์„ธ๊ณ„ 5,000๋ช… ์ด์ƒ์˜ ์—ฐ๊ตฌ์ž๋“ค๊ณผ ํ•จ๊ป˜, ์šฐ๋ฆฌ๋Š” AI ์ง€์‹์˜ ๋ฏผ์ฃผํ™”์™€ ์—ด๋ฆฐ ํ˜‘์—…์„ ํ†ตํ•œ ํ˜์‹  ์ด‰์ง„์— ์ „๋…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜์„ธ์š”:


๐ŸŽฏ ๊ธฐ์—ฌ์ž๋“ค


โญ ์ด ์ €์žฅ์†Œ๊ฐ€ ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์Šคํƒ€๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!

"์šฐ๋ฆฌ๋Š” ํ•จ๊ป˜ ์ฝ”๋“œ์™€ ์•„์ด๋””์–ด๋ฅผ ๋‚˜๋ˆ„๋ฉฐ ๋” ๋‚˜์€ ๋ฐ์ดํ„ฐ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์—ฌ์ •์„ ๋– ๋‚ฉ๋‹ˆ๋‹ค. ๐ŸŒ๐Ÿ’ก"