@@ -122,19 +122,53 @@ print(f"FAISS index saved to: {OUTPUT_DIR}/catalog.faiss")
122122
123123### 4) 실행
124124
125+ v2 CLI는 외부 벡터 인덱스 경로를 인수로 받지 않습니다.
126+ 앞서 생성한 FAISS 인덱스를 활용하려면 Python API로 파이프라인을 직접 구성합니다.
127+
128+ ``` python
129+ # run_query.py
130+ import os
131+ from dotenv import load_dotenv
132+ from lang2sql import CatalogChunker, VectorRetriever
133+ from lang2sql.integrations.db import SQLAlchemyDB
134+ from lang2sql.integrations.embedding import OpenAIEmbedding
135+ from lang2sql.integrations.llm import OpenAILLM
136+ from lang2sql.integrations.vectorstore import FAISSVectorStore
137+ from lang2sql.flows.hybrid import HybridNL2SQL
138+
139+ load_dotenv()
140+
141+ INDEX_DIR = " ./dev/table_info_db"
142+ embedding = OpenAIEmbedding(
143+ model = os.getenv(" OPEN_AI_EMBEDDING_MODEL" , " text-embedding-3-large" ),
144+ api_key = os.getenv(" OPEN_AI_KEY" ),
145+ )
146+
147+ # FAISS 인덱스 로드 후 파이프라인 구성
148+ store = FAISSVectorStore.load(f " { INDEX_DIR } /catalog.faiss " )
149+
150+ pipeline = HybridNL2SQL(
151+ catalog = [], # FAISS에 이미 인덱싱돼 있으므로 빈 리스트
152+ llm = OpenAILLM(model = os.getenv(" OPEN_AI_LLM_MODEL" , " gpt-4o" ), api_key = os.getenv(" OPEN_AI_KEY" )),
153+ db = SQLAlchemyDB(os.getenv(" DB_URL" , " sqlite:///sample.db" )),
154+ embedding = embedding,
155+ db_dialect = os.getenv(" DB_TYPE" , " sqlite" ),
156+ )
157+
158+ rows = pipeline.run(" 주문 수를 집계하는 SQL을 만들어줘" )
159+ print (rows)
160+ ```
161+
162+ Streamlit UI:
163+
125164``` bash
126- # Streamlit UI
127165lang2sql run-streamlit
166+ ```
128167
129- # CLI 예시 (FAISS 인덱스 사용)
130- lang2sql query " 주문 수를 집계하는 SQL을 만들어줘" \
131- --vectordb-type faiss \
132- --vectordb-location ./dev/table_info_db
168+ CLI (카탈로그 없이 baseline만 가능):
133169
134- # CLI 예시 (pgvector)
135- lang2sql query " 주문 수를 집계하는 SQL을 만들어줘" \
136- --vectordb-type pgvector \
137- --vectordb-location " postgresql://pgvector:pgvector@localhost:5432/postgres"
170+ ``` bash
171+ lang2sql query " 주문 수를 집계해줘" --flow baseline --dialect sqlite
138172```
139173
140174### 5) (선택) pgvector로 적재하기
@@ -229,4 +263,3 @@ VectorRetriever.from_chunks(
229263print (f " pgvector collection populated: { TABLE } " )
230264```
231265
232- 주의: FAISS 디렉토리 또는 pgvector 컬렉션이 없으면 현재 코드는 DataHub에서 메타데이터를 가져와 인덱스를 생성하려고 시도합니다. DataHub를 사용하지 않는 경우 위 절차로 사전에 VectorDB를 만들어 두세요.
0 commit comments