From bf8efd1cd3784a8da626f5a9a5a80bff45d564e5 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Mon, 6 Apr 2026 12:49:45 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9E=84=EB=B2=A0=EB=94=A9=20=EB=AA=A8?= =?UTF-8?q?=EB=8D=B8=20=EB=B3=80=EA=B2=BD=20=E2=80=94=20nomic-embed-text?= =?UTF-8?q?=20=E2=86=92=20bge-m3=20(1024=EC=B0=A8=EC=9B=90,=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - config.yaml: embedding model → bge-m3 - document.py: Vector(768) → Vector(1024) - embed_worker.py: 모델 버전 업데이트 - migration 011: 벡터 컬럼 재생성 (기존 임베딩 초기화) Co-Authored-By: Claude Opus 4.6 (1M context) --- app/models/document.py | 2 +- app/workers/embed_worker.py | 6 +++--- config.yaml | 2 +- migrations/011_embedding_1024.sql | 7 +++++++ 4 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 migrations/011_embedding_1024.sql diff --git a/app/models/document.py b/app/models/document.py index bad4566..6fcb71f 100644 --- a/app/models/document.py +++ b/app/models/document.py @@ -43,7 +43,7 @@ class Document(Base): ai_confidence: Mapped[float | None] = mapped_column() # 3계층: 벡터 임베딩 - embedding = mapped_column(Vector(768), nullable=True) + embedding = mapped_column(Vector(1024), nullable=True) embed_model_version: Mapped[str | None] = mapped_column(String(50)) embedded_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) diff --git a/app/workers/embed_worker.py b/app/workers/embed_worker.py index 74f8999..15871a4 100644 --- a/app/workers/embed_worker.py +++ b/app/workers/embed_worker.py @@ -1,4 +1,4 @@ -"""벡터 임베딩 워커 — GPU 서버 nomic-embed-text 호출""" +"""벡터 임베딩 워커 — GPU 서버 bge-m3 호출""" from datetime import datetime, timezone @@ -10,9 +10,9 @@ from models.document import Document logger = setup_logger("embed_worker") -# 임베딩용 텍스트 최대 길이 (nomic-embed-text: 8192 토큰) +# 임베딩용 텍스트 최대 길이 (bge-m3: 8192 토큰) MAX_EMBED_TEXT = 6000 -EMBED_MODEL_VERSION = "nomic-embed-text-v1.5" +EMBED_MODEL_VERSION = "bge-m3" async def process(document_id: int, session: AsyncSession) -> None: diff --git a/config.yaml b/config.yaml index 91fbdf0..53a4f9f 100644 --- a/config.yaml +++ b/config.yaml @@ -26,7 +26,7 @@ ai: embedding: endpoint: "http://ollama:11434/api/embeddings" - model: "nomic-embed-text" + model: "bge-m3" vision: endpoint: "http://ollama:11434/api/generate" diff --git a/migrations/011_embedding_1024.sql b/migrations/011_embedding_1024.sql new file mode 100644 index 0000000..ecc816e --- /dev/null +++ b/migrations/011_embedding_1024.sql @@ -0,0 +1,7 @@ +-- 벡터 차원 변경: 768 → 1024 (nomic-embed-text → bge-m3) +-- 기존 임베딩 데이터 초기화 (재생성 필요) +ALTER TABLE documents DROP COLUMN IF EXISTS embedding; +ALTER TABLE documents ADD COLUMN embedding vector(1024); + +-- 기존 임베딩 메타 초기화 +UPDATE documents SET embedded_at = NULL, embed_model_version = NULL;