Skip to content

Commit 5812f6a

Browse files
Merge pull request #146 from CausalInferenceLab/145-튜토리얼-리펙토링
fix: 튜토리얼로 실행시 실패하는 현상 수정
2 parents e66387d + 7c6a253 commit 5812f6a

File tree

4 files changed

+53
-8
lines changed

4 files changed

+53
-8
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ test_lhm/
1111
.vscode
1212
table_info_db
1313
ko_reranker_local
14+
create_faiss.py
15+
*.csv

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ cd lang2sql
7474

7575
# (권장) uv 사용
7676
# uv 설치가 되어 있다면 아래 두 줄로 개발 모드 설치
77-
uv venv
77+
uv venv --python 3.11
7878
source .venv/bin/activate
7979
uv pip install -e .
8080

docs/tutorials/getting-started-without-datahub.md

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,25 @@
22

33
이 문서는 DataHub 없이도 Lang2SQL을 바로 사용하기 위한 최소 절차를 설명합니다. CSV로 테이블/컬럼 설명을 준비해 FAISS 또는 pgvector에 적재한 뒤 Lang2SQL을 실행합니다.
44

5+
### 0) 준비
6+
7+
```bash
8+
# 소스 클론
9+
git clone https://github.com/CausalInferenceLab/lang2sql.git
10+
cd lang2sql
11+
12+
# (권장) uv 사용
13+
# uv 설치가 되어 있다면 아래 두 줄로 개발 모드 설치
14+
uv venv --python 3.11
15+
source .venv/bin/activate
16+
uv pip install -e .
17+
18+
# (대안) pip 사용
19+
python -m venv .venv
20+
source .venv/bin/activate
21+
pip install -e .
22+
```
23+
524
### 1) .env 최소 설정 (OpenAI 기준)
625

726
```bash
@@ -20,11 +39,15 @@ VECTORDB_LOCATION=./table_info_db # FAISS 디렉토리 경로
2039
# VECTORDB_TYPE=pgvector
2140
# VECTORDB_LOCATION=postgresql://user:pass@host:5432/db
2241
# PGVECTOR_COLLECTION=table_info_db
42+
43+
# DB 타입
44+
DB_TYPE=clickhouse
2345
```
2446

2547
중요: 코드상 OpenAI 키는 `OPEN_AI_KEY` 환경변수를 사용합니다. `.example.env``OPENAI_API_KEY`는 사용되지 않으니 혼동에 주의하세요.
2648

2749
### 2) 테이블/컬럼 메타데이터 준비(CSV 예시)
50+
- table_catalog.csv
2851

2952
```csv
3053
table_name,table_description,column_name,column_description
@@ -40,13 +63,31 @@ orders,주문 정보 테이블,status,주문 상태
4063
### 3) FAISS 인덱스 생성(로컬)
4164

4265
```python
66+
"""
67+
create_faiss.py
68+
69+
CSV 파일에서 테이블과 컬럼 정보를 불러와 OpenAI 임베딩으로 벡터화한 뒤,
70+
FAISS 인덱스를 생성하고 로컬 디렉토리에 저장한다.
71+
72+
환경 변수:
73+
OPEN_AI_KEY: OpenAI API 키
74+
OPEN_AI_EMBEDDING_MODEL: 사용할 임베딩 모델 이름
75+
76+
출력:
77+
지정된 OUTPUT_DIR 경로에 FAISS 인덱스 저장
78+
"""
79+
80+
import csv
81+
import os
4382
from collections import defaultdict
44-
import csv, os
45-
from langchain_openai import OpenAIEmbeddings
83+
84+
from dotenv import load_dotenv
4685
from langchain_community.vectorstores import FAISS
86+
from langchain_openai import OpenAIEmbeddings
4787

48-
CSV_PATH = "./table_catalog.csv" # 위 CSV 파일 경로
49-
OUTPUT_DIR = "./table_info_db" # VECTORDB_LOCATION과 동일하게 맞추세요
88+
load_dotenv()
89+
CSV_PATH = "./table_catalog.csv" # 위 CSV 파일 경로
90+
OUTPUT_DIR = "./table_info_db" # .env 파일의 VECTORDB_LOCATION 값과 동일하게 맞추세요.
5091

5192
tables = defaultdict(lambda: {"desc": "", "columns": []})
5293
with open(CSV_PATH, newline="", encoding="utf-8") as f:
@@ -63,9 +104,12 @@ for t, info in tables.items():
63104
cols = "\n".join([f"{c}: {d}" for c, d in info["columns"]])
64105
page = f"{t}: {info['desc']}\nColumns:\n {cols}"
65106
from langchain.schema import Document
107+
66108
docs.append(Document(page_content=page))
67109

68-
emb = OpenAIEmbeddings(model=os.getenv("OPEN_AI_EMBEDDING_MODEL"), openai_api_key=os.getenv("OPEN_AI_KEY"))
110+
emb = OpenAIEmbeddings(
111+
model=os.getenv("OPEN_AI_EMBEDDING_MODEL"), openai_api_key=os.getenv("OPEN_AI_KEY")
112+
)
69113
db = FAISS.from_documents(docs, emb)
70114
os.makedirs(OUTPUT_DIR, exist_ok=True)
71115
db.save_local(OUTPUT_DIR)
@@ -119,5 +163,3 @@ print(f"pgvector collection populated: {COLLECTION}")
119163
```
120164

121165
주의: FAISS 디렉토리가 없으면 현재 코드는 DataHub에서 메타데이터를 가져와 인덱스를 생성하려고 시도합니다. DataHub를 사용하지 않는 경우 위 절차로 사전에 VectorDB를 만들어 두세요.
122-
123-

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ dependencies = [
3838
"mysql-connector-python>=9.3.0,<10.0.0",
3939
"duckdb>=1.2.2,<2.0.0",
4040
"psycopg2-binary>=2.9.10,<3.0.0",
41+
"psycopg[binary]>=3.2,<4.0",
4142
"pyodbc>=5.1.0,<6.0.0",
4243
"crate>=0.29.0,<1.0.0",
4344
"pyhive>=0.6.6,<1.0.0",

0 commit comments

Comments
 (0)