π₯³ νΈμ¦μ¨λ©μ μ€μκΈ° μ μ 미리 νμΈν΄μ£ΌμΈμ.ΒΆ
λ¨ν‘λ°©ΒΆ
μνν μ§νμ μν΄ λ¨ν‘λ°©μ μ΄μν©λλ€. λμ½ 2025 곡μ λ¨ν‘λ°©μ΄ μλλΌ, λ³Έ νΈμ¦μ¨λ© μΈμ λ§μ μν λ¨ν‘λ°©μ λλ€.
νΈμ¦μ¨λ© μ°Έμ¬ μ μ 미리 λ€μ΄μ€μ μ, μ€μ΅νκ²½ νμΈκ³Ό κ΄λ ¨νμ¬ κΆκΈνμ λΆλΆμ μΈμ λ λ¬Έμμ£ΌμΈμ. π
곡ν΅ΒΆ
μμ€μ½λ νΈμ§κΈ° Visual Studio CodeΒΆ
μμ€μ½λ νΈμ§κΈ°λ μ νΈνμλ μλν°λ₯Ό μ¬μ©νμλ©΄ λ©λλ€. μ νΈνμλ μλν°κ° μμΌμλ€λ©΄, μλ λ§ν¬μμ Visual Studio Codeλ₯Ό λ€μ΄λ°μΌμκ³ λν΄νΈ μ΅μ μΌλ‘ μ€μΉν΄μ£ΌμΈμ.
νΈμ¦μ¨λ©μμλ μλμ°, Visual Studio Code, νμμ κΈ°μ€μΌλ‘ μ§νν©λλ€.
OpenAI API KeyΒΆ
λ³Έ μ€μ΅μμλ OpenAI APIλ₯Ό νμ©ν©λλ€. κ°μμ OpenAI API ν€λ₯Ό 미리 μμ±ν΄μ£ΌμΈμ. OpenAI API Keyλ https://platform.openai.com/api-keys νμ΄μ§μμ μ μ©μΉ΄λ λ±λ‘ νμ λ°κΈλ°μΌμ€ μ μμ΅λλ€.
OpenAI API Key μμ±μ΄ μ΄λ €μ°μ λΆκ»λ νΈμ¦μ¨λ© μκ° λμμ μ¬μ©νμ€ μ μλ API Keyλ₯Ό μ 곡ν΄λ립λλ€.
μ°Έκ³
μλ² λ©μ OpenAI Embedding APIλ₯Ό νΈμΆνμ§ μκ³ μ κ° λ―Έλ¦¬ μλ² λ©ν λ°μ΄ν°λ₯Ό κ°μ Έμμ μ μ₯ν©λλ€. μ±ν μλ΅ μμ± μμλ§ OpenAI APIλ₯Ό νμ©ν κ²μ΄κΈ°μ μκΈμ λͺ μμ μ λλ‘ μμλ©λλ€.
μ¬μ©ν λ°μ΄ν°λ² μ΄μ€ΒΆ
λ³Έ νΈμ¦μ¨λ©μμλ 벑ν°μ€ν μ΄λ‘μ λ€μ 2κ°μ λ°μ΄ν°λ² μ΄μ€ μ€μ νλλ₯Ό μ¬μ©νμ€ μ μμ΅λλ€.
sqlite-vec
λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νSQLite
λ°μ΄ν°λ² μ΄μ€pgvector
λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νPostgreSQL
λ°μ΄ν°λ² μ΄μ€ (pgvector
νμ₯μ΄ μ€μΉ νμ)
λ λ°μ΄ν°λ² μ΄μ€ λͺ¨λ μ₯κ³ κ° μ μ§μνλ λ°μ΄ν°λ² μ΄μ€μ΄λ©°, μ κ° κ°λ°ν django-pyhub-rag
λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅ν΄
λ°μ΄ν°λ² μ΄μ€ μ’
λ₯μ κ΄κ³μμ΄ λμΌν λ°©μμΌλ‘ 맀λλ½κ² ν΅ν©νμ¬ μ¬μ©ν μ μμ΅λλ€.
μ°Έκ³
벑ν°μ€ν μ΄(Vector Store)λ ν μ€νΈλ μ΄λ―Έμ§μ κ°μ λ°μ΄ν°λ₯Ό 벑ν°(μ«μ λ°°μ΄) ννλ‘ μ μ₯νκ³ κ²μν μ μκ² ν΄μ£Όλ νΉμν λ°μ΄ν°λ² μ΄μ€μ λλ€. μΌλ°μ μΈ λ°μ΄ν°λ² μ΄μ€κ° μ νν λ¨μ΄λ ꡬ문 맀μΉμΌλ‘ κ²μμ μννλ κ²κ³Ό λ¬λ¦¬, 벑ν°μ€ν μ΄λ βμλ―Έμ μ μ¬λβλ₯Ό κΈ°λ°μΌλ‘ κ²μμ΄ κ°λ₯ν©λλ€. μλ₯Ό λ€μ΄ βκ°μμ§βλΌκ³ κ²μνμ λ βλ°λ €κ²¬βμ΄λ βμ μ견βκ³Ό κ°μ μλ―Έμ μ μ¬ν λ΄μ©λ ν¨κ» μ°Ύμ μ μμ΅λλ€.
μ΄λ¬ν νΉμ± λλ¬Έμ 벑ν°μ€ν μ΄λ AI μ±λ΄μ΄λ RAG μμ€ν μμ μμ£Ό νμ© λ©λλ€.
νμ₯μ λ€νΈμν¬ μ¬μ μ΄ μ’μ§ μμ μ μμΌλ―λ‘, λ‘컬 λ°μ΄ν°λ² μ΄μ€μΈ SQLite
κΈ°λ°μΌλ‘ μ§ννλ κ²μ κΆμ₯ν©λλ€.
κ·Έλ°λ°, μ¬μ©νμλ νμ΄μ¬ μΈν°ν리ν°μμ SQLite
νμ₯μ μ§μνμ§ μκ±°λ sqlite-vec
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ§μνμ§ μμ μ μμ΅λλ€.
μ¬μ©νμλ μ΄μ체μ μ λ§κ² μλ λ΄μ©μ νμΈν΄μ£ΌμΈμ.
SQLite
λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νκΈ° μ΄λ €μ°μ€ κ²½μ° (νΉν macOS μμλ sqlite3
νμ₯μ΄ μ§μλμ§ μμ μ μμ΅λλ€.)
λ체 λ°©μμΌλ‘ pgvector
νμ₯μ΄ μ€μΉλ PostgreSQL
λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν©λλ€.
μ΄ κ²½μ°μλ νμ΄μ¬μ 3.10 μ΄μμ΄μλ©΄ λꡬμ.
[supabase] Postgres μλΉμ€ νμ©νκΈ° λ¬Έμλ₯Ό μ°Έκ³ νμ¬ supabase
μλΉμ€μ κ°μ
νμκ³ , DATABASE_URL
νκ²½λ³μλ§ μμ±ν΄μ κ°μ Έμμ£Όμλ©΄ λ©λλ€. :-)
νμ΄μ¬ λ²μ ΒΆ
νμ΄μ¬ 3.10 μ΄μμ΄ μ€μΉλ μλμ°/λ§₯ νκ²½μ΄ νμν©λλ€. (μ₯κ³ 5.0 λΆν° νμ΄μ¬ 3.10 μ΄μμ μꡬ)
μμ€ν νμΈ μ½λΒΆ
μλ μ½λλ₯Ό μννμ¬, νμ¬ μ¬μ© μ€μ΄μ νμ΄μ¬μ΄ νΈμ¦μ¨λ© μ§νμ μ ν©νμ§ νμΈν©λλ€. μ΄μ체μ μ λ§κ² μλ μΉμ λ΄μ©μ νμΈν΄μ£ΌμΈμ.
λ€μμ βμμ€ν νμΈ μ½λβλ μλ΄λ리λ μ μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ μλ λ€μ΄λ‘λλμ΄ μνλλ―λ‘, λ°λ‘ μ μ₯νμ§ μμΌμ λ λ©λλ€.
μμ€ν
νμΈ μ½λ sqlite3-check-system.py
1import sys
2import sqlite3
3
4is_windows = sys.platform == "win32"
5is_arm = "ARM" in sys.version
6is_python_3_10_or_later = sys.version_info[:2] >= (3, 10)
7
8try:
9 import sqlite_vec
10except ImportError:
11 sqlite_vec = None
12
13if is_windows and is_arm:
14 print("β ARM version of Python does not support sqlite-vec library. Please reinstall AMD64 version of Python.")
15 sys.exit(1)
16
17if not is_python_3_10_or_later:
18 print("β Python 3.10 or later is required.")
19 sys.exit(1)
20
21if sqlite_vec is None:
22 print("β Please install sqlite-vec library.")
23 sys.exit(1)
24
25with sqlite3.connect(":memory:") as db:
26 try:
27 db.enable_load_extension(True)
28 sqlite_vec.load(db) # Loading sqlite-vec extension
29 db.enable_load_extension(False)
30 except AttributeError:
31 print("β This Python does not support sqlite3 extension. Please refer to the guide and reinstall Python.")
32 sys.exit(1)
33 else:
34 print("β
This Python supports sqlite3 extension. See you at the venue. ;-)")
μλμ°ΒΆ
νμ΄μ¬ 3.10 μ΄μ, AMD64 λ²μ ΒΆ
νμ΄μ¬μ 3.10 μ΄μμ΄μκ³ , https://www.python.org μμ λ€μ΄λ°μΌμ AMD64 λ²μ μ νμ΄μ¬μ λͺ¨λ κ°λ₯ ν©λλ€.
μμ€ν νμΈ μ½λ μνΒΆ
pip install sqlite-vec
λͺ
λ ΉμΌλ‘ sqlite-vec
λΌμ΄λΈλ¬λ¦¬λ₯Ό λ¨Όμ μ€μΉνμκ³ ,
μλ λͺ
λ Ήμ μννμ¬ μμ€ν
νμΈ μ½λ λμμ νμΈν΄μ£ΌμΈμ.
μ°Έκ³
python
λͺ
λ ΉμΌλ‘ μ€νν©λλ€.
μν©μ λ§μΆ° python
λͺ
λ Ή λμ νμ¬μ νμ΄μ¬ μΈν°ν리ν°μ λ§μΆ° μ€νν΄μ£ΌμΈμ.
κ°μνκ²½μ μμ±/νμ±ννκ³ , sqlite-vec
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν©λλ€.
@REM python λͺ
λ Ήμ μ¬λ¬λΆ νκ²½μ λ§μΆ° μ€νν΄μ£ΌμΈμ.
python -m venv venv
venv\Scripts\activate
python -m pip install sqlite-vec
μ΄μ΄μ μμ€ν νμΈ μ½λλ₯Ό μνν©λλ€.
powershell -Command "(iwr https://gist.githubusercontent.com/allieus/aa62bffa2aaf26085eb11b3b4e98d9e6/raw/sqlite3-check-system.py).Content" | python

μμ κ°μ΄
β This Python supports sqlite3 extension. See you at the venue. ;-)
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄ νΈμ¦μ¨λ© μ€λΉ μλ£μ λλ€. νμ¬μ₯μμ λ΅κ² μ΅λλ€. πβ Please install sqlite-vec library.
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄sqlite-vec
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉνμ νμ, λ€μ μ½λλ₯Ό μ€νν΄μ£ΌμΈμ.β ARM version of Python does not support sqlite-vec library. Please reinstall AMD64 version of Python.
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄ νμ΄μ¬μ 3.10 μ΄μ, AMD64 λ²μ μΌλ‘ μ¬μ€μΉν΄μ£ΌμΈμ.β Python 3.10 or later is required.
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄ νμ΄μ¬μ 3.10 μ΄μμΌλ‘ μ¬μ€μΉ (AMD64)ν΄μ£ΌμΈμ.β This Python does not support sqlite3 extension. Please refer to the guide and reinstall Python.
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄ νμ΄μ¬μ 3.10 μ΄μμΌλ‘ μ¬μ€μΉνμ νμ, λ€μ κ°μνκ²½ μμ±νμκ³ , λΌμ΄λΈλ¬λ¦¬ μ€μΉνμ νμ μ½λλ₯Ό μ€νν΄μ£ΌμΈμ. μλμ°μμλ μ΄ λ©μμ§κ° λ¨μ€ μΌμ μμ κ²μ λλ€.
κ²½κ³
ARM64 λ²μ μ νμ΄μ¬μ sqlite-vec
λΌμ΄λΈλ¬λ¦¬μμ λ°μ΄λ리λ₯Ό μ§μνμ§ μμ΅λλ€. ARM64 μλμ° νμ΄μ¬μμ sqlite-vec
λΌμ΄λΈλ¬λ¦¬ μ€μΉ μμ
μλμ κ°μ΄ sqlite-vec has no wheels
μ€λ₯ λ©μμ§κ° μΆλ ₯λ©λλ€.

macOSΒΆ
νμ΄μ¬ 3.10 μ΄μ, μ§μ λΉλκ° νμΒΆ
macOS μμλ 보μμ μ΄μ λ‘ sqlite3
λͺ¨λμμ enable_load_extension
λ©μλκ° λΉνμ±νλμ΄μμ΅λλ€.
https://www.python.org μμ λ€μ΄λ°μ μ€μΉν λ²μ λ λ§μ°¬κ°μ§μ
λλ€.
μμ€ν νμΈ μ½λ μνΒΆ
pip install sqlite-vec
λͺ
λ ΉμΌλ‘ sqlite-vec
λΌμ΄λΈλ¬λ¦¬λ₯Ό λ¨Όμ μ€μΉνμκ³ ,
μλ λͺ
λ Ήμ μννμ¬ μμ€ν
νμΈ μ½λ λμμ νμΈν΄μ£ΌμΈμ.
μ°Έκ³
python
λͺ
λ ΉμΌλ‘ μ€νν©λλ€.
μν©μ λ§μΆ° python
λͺ
λ Ή λμ νμ¬μ νμ΄μ¬ μΈν°ν리ν°μ λ§μΆ° μ€νν΄μ£ΌμΈμ.
κ°μνκ²½μ λ¨Όμ μμ±νκ³ , νμ±ννκ³ , sqlite-vec
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν©λλ€.
# python λͺ
λ Ήμ μ¬λ¬λΆ νκ²½μ λ§μΆ° μ€νν΄μ£ΌμΈμ.
python -m venv venv
source ./venv/bin/activate
python -m pip install sqlite-vec
μ΄μ΄μ μμ€ν νμΈ μ½λλ₯Ό μνν©λλ€.
curl https://gist.githubusercontent.com/allieus/aa62bffa2aaf26085eb11b3b4e98d9e6/raw/sqlite3-check-system.py | python

μμ κ°μ΄
β This Python supports sqlite3 extension. See you at the venue. ;-)
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄ νΈμ¦μ¨λ© μ€λΉ μλ£μ λλ€. νμ¬μ₯μμ λ΅κ² μ΅λλ€. πβ Please install sqlite-vec library.
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄sqlite-vec
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉνμ νμ, λ€μ μ½λλ₯Ό μ€νν΄μ£ΌμΈμ.β Python 3.10 or later is required.
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄ νμ΄μ¬μ 3.10 μ΄μμΌλ‘ μ¬μ€μΉ (macOS)ν΄μ£ΌμΈμ.β This Python does not support sqlite3 extension. Please refer to the guide and reinstall Python.
λΌλ λ©μμ§κ° μΆλ ₯λμλ©΄ νμ΄μ¬μ μ§μ λΉλνμ μΌ ν©λλ€.
μ ν #1) νμ΄μ¬μ μ§μ λΉλνμ€λ €λ©΄?ΒΆ
sqlite3
νμ₯μ΄ μ§μλλ νμ΄μ¬μ μ€μΉνμ€λ €λ©΄ μ§μ λΉλκ° νμν©λλ€
pyenv
λ₯Ό μ¬μ©νμλ κ²½μ° macOSμ νμ΄μ¬ μ€μΉ λ¬Έμλ₯Ό μ°Έκ³ νμ¬ sqlite3
νμ₯μ΄ μ§μλλ νμ΄μ¬μ μ€μΉνμ€ μ μμ΅λλ€.
asdf
μμλ λμΌν λ°©λ²μΌλ‘ μ€μΉνμ€ μ μμ΅λλ€. λ€μ μμλ‘ μ§νλ©λλ€.
brew
λ₯Ό ν΅ν΄sqlite
ν©ν€μ§λ₯Ό μ΅μ λ²μ μΌλ‘ μ€μΉpyenv
λ₯Ό ν΅ν νμ΄μ¬ λΉλμμLDFLAGS
,CPPFLAGS
,CFLAGS
,PYTHON_CONFIGURE_OPTS
νκ²½λ³μλ₯Ό ν΅ν΄sqlite
λΉλ μ΅μ μ μ§μ νμ¬ μ€μΉ
μ ν #2) μ¬μ€μΉμμ΄ μ§νν λ €λ©΄?ΒΆ
νμ΄μ¬ λΉλκ° μ΄λ €μ°μ€ κ²½μ°, λ체 λ°©μμΌλ‘ pgvector
νμ₯μ΄ μ€μΉλ PostgreSQL
λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νμ€ μ μμ΅λλ€.
λμ νμ₯ λ€νΈμν¬κ° μ’μ§ μμ κ²½μ° λ°μ΄ν°λ² μ΄μ€ μ μμ μ§μ°μ΄ λ°μν μλ μμ΅λλ€.
pgvector
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ€λ €λ©΄ νμ΄μ¬ λ²μ μ΄ 3.10 μ΄μμ΄μλ©΄ λꡬμ.
psycopg2-binary
λΌμ΄λΈλ¬λ¦¬λ§ μ€μΉλμλ©΄ λ©λλ€. λ³ μ΄μμμ΄ μ μ€μΉλμ€ κ²μ
λλ€.
python -m pip install psycopg2-binary

PostgreSQL
λ°μ΄ν°λ² μ΄μ€λ supabase.com
μλΉμ€λ₯Ό νμ©νκ² μ΅λλ€.
[supabase] Postgres μλΉμ€ νμ©νκΈ° λ¬Έμλ₯Ό μ°Έκ³ νμ¬ supabase
μλΉμ€μ κ°μ
νμκ³ , DATABASE_URL
νκ²½λ³μλ§ μμ±ν΄μ κ°μ Έμμ£Όμλ©΄ λ©λλ€. :-)
DATABASE_URL
νκ²½λ³μ μμΒΆpostgresql://postgres.euvmdqdkpiseywirljvs:μνΈ@aws-0-ap-northeast-2.pooler.supabase.com:5432/postgres
νΉμ Docker κ° κ°λ₯νμ λΆμ [docker] Postgres μλ² κ΅¬λνκΈ° λ¬Έμλ₯Ό μ°Έκ³ νμ¬, λ컀 μ΄λ―Έμ§λ§ pgvector/pgvector:pg17
λ‘ μ§μ νμλ©΄ λ‘컬μμ pgvector νμ₯μ΄ μ€μΉλ PostgreSQL
λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν μ μμ΅λλ€.
κ°μ¬ν©λλ€. ;-)ΒΆ
νΈμ¦μ¨λ© μκ°μλ π¨βπ» νΈμ¦μ¨λ© μκ°. μ€μ΅νκ²½ νμΈ λ¬ΈμλΆν° μ§ννκ² μ΅λλ€.
λ³Έ λ¬Έμμ λ΄μ© νμΈμ μ΄λ €μμ΄ μμΌμκ±°λ, μ¬λ¬ κΆκΈν μ μ΄λ λ¬Έμμ¬νμ΄ μμΌμλ€λ©΄ νμ΄μ¬μ¬λλ°© λμ½ 2025 νΈμ¦μ¨λ© λ¨ν‘λ°©μ λ€μ΄μ€μ μ μΈμ λ νΈν μ§λ¬Έ λ¨κ²¨μ£ΌμΈμ. (μ°Έμ¬μ½λ: 2025)
νΈμ¦μ¨λ© μ μ 미리 λ€μ΄μ€μ μ μΈμ¬ λ¨κ²¨μ£Όμλ©΄ λμ± λ°κ°κ² μ£ ? νμ¬μ₯μμ λ΅κ² μ΅λλ€. π