์ฐ๋ฆฌ๋ ํจ๊ป ์ฝ๋์ ์์ด๋์ด๋ฅผ ๋๋๋ฉฐ ๋ ๋์ ๋ฐ์ดํฐ ํ๊ฒฝ์ ๋ง๋ค๊ธฐ ์ํ ์คํ์์ค ์ฌ์ ์ ๋ ๋ฉ๋๋ค. ๐๐ก
"๋ชจ๋๊ฐ ๋ ๊ฐ์น ์๋ ์ผ์ ์ง์คํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค."
Lang2SQL์ ์์ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํ๋ SQL ๋ฌธ์ผ๋ก ๋ณํํ๋ ์คํ์์ค ๋๊ตฌ์ ๋๋ค. LangGraph์ DataHub ํตํฉ์ผ๋ก ๊ตฌ์ถ๋์ด, ๋ณต์กํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง์ ๋ํ ๊น์ ์ง์ ์์ด๋ ๋ฐ์ดํฐ ์ฌ์ฉ์๋ค์ด ํจ์จ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋๋ก ๋์์ค๋๋ค.
- ๐ฃ๏ธ ์์ฐ์ด๋ฅผ SQL๋ก ๋ณํ: ์ผ์ ์ธ์ด๋ฅผ ์ ํํ SQL ์ฟผ๋ฆฌ๋ก ๋ณํ
- ๐ ์ค๋งํธ ํ ์ด๋ธ ๋ฐ๊ฒฌ: ์๋ฏธ๋ก ์ ๊ฒ์์ ์ฌ์ฉํ์ฌ ๊ด๋ จ ํ ์ด๋ธ์ ์๋์ผ๋ก ์ฐพ๊ธฐ
- ๐ ์คํค๋ง ์ธ์: DataHub ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ์ ํํ ์ปฌ๋ผ ๋งคํ
- ๐ ๏ธ ์น ์ธํฐํ์ด์ค: ๋ํํ Streamlit ์ฑ์ ํตํ ์ฌ์ฉ
- ๐ ์๊ฐํ: ์์ฑ๋ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ํ ์ฐจํธ์ ๊ทธ๋ํ๋ก ์๊ฐํํ์ฌ ๋ฐ์ดํฐ ์ธ์ฌ์ดํธ๋ฅผ ์ง๊ด์ ์ผ๋ก ํ์
์๋ก์ด ๋ฐ์ดํฐํ ๊ตฌ์ฑ์๋ค์ด ์์ฃผ ์ง๋ฉดํ๋ ๋ฌธ์ ๋ค:
- ๐คฏ "ํ ์ด๋ธ์ด ๋๋ฌด ๋ง์! ์ด๋์๋ถํฐ ์์ํ์ง?"
- ๐ง "์ด JOIN์ด ๋ง๋์?"
- ๐ "์ด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ๊ด์ฐฎ์๊น์?"
- ๐ฐ "์ด๋ป๊ฒ ์๋ฏธ์๋ ์ธ์ฌ์ดํธ๋ฅผ ์ถ์ถํ์ง?"
Lang2SQL์ ๋ค์์ ์ ๊ณตํ์ฌ ์ด๋ฅผ ํด๊ฒฐํฉ๋๋ค:
- โ ์์ฐ์ด ์ ๋ ฅ โ ํ ์ด๋ธ ์ถ์ฒ
- โ ์ ์ ํ ์ปฌ๋ผ ์กฐํฉ์ผ๋ก ์๋ SQL ์์ฑ
- โ ๋ชจ๋ฒ ์ฌ๋ก ๊ธฐ๋ฐ ์ฑ๋ฅ ์ต์ ํ
pip install lang2sqlgit clone https://github.com/CausalInferenceLab/lang2sql.git
cd lang2sql
pip install -r requirements.txt
python setup.py installStreamlit ์น ์ธํฐํ์ด์ค ์คํ:
lang2sql run-streamlit์ฌ์ฉ์ ์ ์ ํฌํธ ๋ฐ DataHub ์๋ฒ์ ํจ๊ป:
lang2sql --datahub_server http://your-datahub-server:8080 run-streamlit -p 8888- ํ์ฌ๋ pip ํจํค์ง ์ค์น๋ก ํ๋ก์ ํธ ์์์ด ์ด๋ ค์ด ์ํฉ์ ๋๋ค.
.envํ์ผ์ ์์ฑํ์ฌ ์ค์ ๊ด๋ฆฌ (.env.example ์ฐธ๊ณ )
Lang2SQL์ LangGraph๋ฅผ ์ฌ์ฉํ ๋ค๋จ๊ณ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ฆ ๋๋ค:
- ๐ ์์ฐ์ด ์ฒ๋ฆฌ: ์ฌ์ฉ์ ์๋ ํ์ฑ ๋ฐ ํต์ฌ ์ํฐํฐ ์ถ์ถ
- ๐ ํ ์ด๋ธ ๊ฒ์: ์๋ฏธ๋ก ์ ์ ์ฌ์ฑ์ ์ฌ์ฉํ ๊ด๋ จ ํ ์ด๋ธ ์ฐพ๊ธฐ (Vector Search)
- โ๏ธ SQL ์์ฑ: ์ต์ ํ๋ SQL ์ฟผ๋ฆฌ ์์ฑ
- ๐ ์ฟผ๋ฆฌ ์๊ฐํ: ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํ ํฉ๋๋ค.
- LangGraph: LLM ์ํฌํ๋ก์ฐ ์ค์ผ์คํธ๋ ์ด์
- DataHub: ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ํ์ฉ
- Streamlit: ๋ํํ ์น ์ธํฐํ์ด์ค
- Docker๋ฅผ ํ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ปจํ
์ด๋ํํ๊ณ ,
pip install lang2sql์ค์น ํ ๋จ์ผ ๋ช ๋ น์ด๋ก ์คํ ๊ฐ๋ฅํ๋๋ก ๊ฐ์ ํฉ๋๋ค. - CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ๋ฐ ์๋ํ๋ ํ ์คํธ ํ๊ฒฝ ๊ตฌ์ฑ๊น์ง ํ์ฅํ ์ ์๋ ์์ ์ ๋๋ค.
- ์ฟผ๋ฆฌ ์์ฑ ๊ณผ์ ์ ์์ด์ ํฑํ๊ฒ ๊ฐ์ ํ์ฌ ๋์ฑ ์ง๋ฅ์ ์ด๊ณ ์์จ์ ์ธ SQL ์์ฑ์ด ๊ฐ๋ฅํ๋๋ก ๊ฐ๋ฐํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋์ค์ปค๋ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๊ฐํํ์ฌ ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฐพ์ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
- ํ์ฌ Datahub์ Glossary์ ์ฟผ๋ฆฌ ์์๋ฅผ ์ฝ๋๋ก ์กฐํํ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด ์์ต๋๋ค.
- ์ด๋ฌํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌ ์์ฑ ๊ณผ์ ์ ๋์ฑ ๊ธด๋ฐํ๊ฒ ํตํฉํ์ฌ ์ปจํ ์คํธ ๊ธฐ๋ฐ์ ์ ํํ SQL ์์ฑ์ ์ง์ํ๋ ์์ ์ ๋๋ค.
- ํ์ฌ๋ Datahub๋ฅผ ํตํด ๋ก์ปฌ์ FAISS VectorDB๋ฅผ ์์ฑํด์ผ๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์กฐ์ ๋๋ค.
- ์ด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ์ Datahub ์์ด๋ ๊ธฐ์กด์ ์ค๋น๋ VectorDB๋ง ์์ผ๋ฉด ๋ฐ๋ก ํ์ฉํ ์ ์๋๋ก ์ํคํ ์ฒ๋ฅผ ๊ฐ์ ํ๋ ์์ ์ ๋๋ค.
- ํ์ฌ Streamlit์ ํตํ ์น ์ธํฐํ์ด์ค๋ง ์ง์ํ๊ณ ์์ต๋๋ค.
- CLI, JSON ๋ฑ ๋ค์ํ ์ถ๋ ฅ ํฌ๋งท์ ์ง์ํ์ฌ ์ฌ์ฉ์๊ฐ ์ ํธํ๋ ํ๊ฒฝ์์ ์ ์ฐํ๊ฒ ํ์ฉํ ์ ์๋๋ก ๊ฐ์ ํฉ๋๋ค.
- ํ๋ก์ ํธ ์ฌ์ฉ ํจํด๊ณผ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ณ , ์์ธํ ๋ก๊น ์์คํ ์ ๊ตฌ์ถํฉ๋๋ค.
- ์ฌ์ฉ์ ํผ๋๋ฐฑ ์์ง ๋ฐ ๋ถ์ ํ๋ก์ธ์ค๋ฅผ ํตํด ์ง์์ ์ธ ๊ฐ์ ์ด ๊ฐ๋ฅํ ๊ธฐ๋ฐ์ ๋ง๋ จํ๋ ์์ ์ ๋๋ค.
- ํ๋ก์ ํธ ๊ธฐ์ฌ ์ฅ๋ฒฝ์ ๋ฎ์ถ๊ธฐ ์ํ ํฌ๊ด์ ์ธ ๋ฌธ์ํ ์์ ์ ๋๋ค.
- ๊ฐ๋ฐ์ ๊ฐ์ด๋, ํํ ๋ฆฌ์ผ ๋ฑ์ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ์ฌ ์๋ก์ด ๊ธฐ์ฌ์๋ค์ด ์ฝ๊ฒ ์ฐธ์ฌํ ์ ์๋ ํ๊ฒฝ์ ์กฐ์ฑํฉ๋๋ค.
์ปค๋ฎค๋ํฐ์ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค! ์ฌ๋ฌ๋ถ์ด ๋์ธ ์ ์๋ ๋ฐฉ๋ฒ๋ค:
- ์ ์ฅ์ ํฌํฌํ๊ธฐ
- ํฌํฌ ํด๋ก :
git clone https://github.com/YOUR_USERNAME/lang2sql.git - ์์กด์ฑ ์ค์น:
pip install -r requirements.txt - ๊ธฐ๋ฅ ๋ธ๋์น ์์ฑ:
git checkout -b feature/amazing-feature - ๋ณ๊ฒฝ์ฌํญ ์ปค๋ฐ:
git commit -m 'Add amazing feature' - ๋ธ๋์น์ ํธ์:
git push origin feature/amazing-feature - Pull Request ์ด๊ธฐ
๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ฑฐ๋ ๊ธฐ๋ฅ ์์ฒญ์ด ์์ผ์ ๊ฐ์? ๋ค์ ์ ๋ณด์ ํจ๊ป ์ด์๋ฅผ ์ด์ด์ฃผ์ธ์:
- ๋ฌธ์ /๊ธฐ๋ฅ์ ๋ํ ๋ช ํํ ์ค๋ช
- ์ฌํ ๋จ๊ณ (๋ฒ๊ทธ์ ๊ฒฝ์ฐ)
- ์์ ๋์ vs ์ค์ ๋์
- ํ๊ฒฝ ์ธ๋ถ์ฌํญ
- pre-commit ํ์ฑํ
- ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ํ ์คํธ ์์ฑ
- ํ์์ ๋ฌธ์ ์ ๋ฐ์ดํธ
- ์์์ ์ด๊ณ ์ ์ค๋ช ๋ ์ปค๋ฐ ์ ์ง
- ๋ชจ๋๋ฅผ ์ํ ๊ฒ์ ๋ฐ์ดํฐ ๊ฒ์ ์์คํ / if(kakaoAI)2024
- AI ๋ฐ์ดํฐ ๋ถ์๊ฐ '๋ฌผ์ด๋ณด์' ๋ฑ์ฅ โ 1๋ถ. RAG์ Text-To-SQL ํ์ฉ
- ํ ๋๋ ธํธ LangGraph
- DataHub ๋ฌธ์
- Vanna.ai
python setup.py sdist bdist_wheel
twine upload dist/*v* ํ์์ ํ๊ทธ๋ฅผ ํธ์ํ์ฌ ์๋ PyPI ๋ฐฐํฌ ํธ๋ฆฌ๊ฑฐ:
git tag v1.0.0
git push origin v1.0.0์ฐธ๊ณ : GitHub Secrets์ PYPI_API_TOKEN ์ค์ ํ์.
Lang2SQL์ ๊ฐ์ง์ฐ๊ตฌ์์ ์ธ๊ณผ์ถ๋ก ํ์์ ๊ฐ๋ฐ์ค์ธ ํ๋ก์ ํธ์ ๋๋ค.
- This project is licensed under the MIT License.
๊ฐ์ง์ฐ๊ตฌ์๋ ๋จธ์ ๋ฌ๋๊ณผ AI ๊ธฐ์ ๋ฐ์ ์ ์ค์ ์ ๋ ๋น์๋ฆฌ ์กฐ์ง์ ๋๋ค. ๊ณต์ , ๋๊ธฐ๋ถ์ฌ, ๊ทธ๋ฆฌ๊ณ ํ์ ์ ๊ธฐ์จ์ด๋ผ๋ ํต์ฌ ๊ฐ์น๋ฅผ ๋ฐํ์ผ๋ก ์ํฅ๋ ฅ ์๋ ์คํ์์ค ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๊ฐ๋๋ค.
์ ์ธ๊ณ 5,000๋ช ์ด์์ ์ฐ๊ตฌ์๋ค๊ณผ ํจ๊ป, ์ฐ๋ฆฌ๋ AI ์ง์์ ๋ฏผ์ฃผํ์ ์ด๋ฆฐ ํ์ ์ ํตํ ํ์ ์ด์ง์ ์ ๋ ํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ์ธ์:
- ๐ฌ Discord
โญ ์ด ์ ์ฅ์๊ฐ ๋์์ด ๋์ จ๋ค๋ฉด ์คํ๋ฅผ ๋๋ฌ์ฃผ์ธ์!
"์ฐ๋ฆฌ๋ ํจ๊ป ์ฝ๋์ ์์ด๋์ด๋ฅผ ๋๋๋ฉฐ ๋ ๋์ ๋ฐ์ดํฐ ํ๊ฒฝ์ ๋ง๋ค๊ธฐ ์ํ ์คํ์์ค ์ฌ์ ์ ๋ ๋ฉ๋๋ค. ๐๐ก"