add hf models in docker
This commit is contained in:
parent
de6d175f7e
commit
bd3faf8133
@ -18,6 +18,8 @@ ADD requirements.txt requirements.txt
|
|||||||
RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
|
RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
|
||||||
rm -f /usr/lib/python*/EXTERNALLY-MANAGED && \
|
rm -f /usr/lib/python*/EXTERNALLY-MANAGED && \
|
||||||
/root/.local/bin/uv pip install --system --no-cache -r requirements.txt
|
/root/.local/bin/uv pip install --system --no-cache -r requirements.txt
|
||||||
|
ADD scripts/download_models.py /tmp/download_models.py
|
||||||
|
RUN python3 /tmp/download_models.py && rm /tmp/download_models.py
|
||||||
ADD api /emblem/api
|
ADD api /emblem/api
|
||||||
ADD web /emblem/web
|
ADD web /emblem/web
|
||||||
RUN cd /emblem/api && ./manage.py collectstatic --noinput
|
RUN cd /emblem/api && ./manage.py collectstatic --noinput
|
||||||
|
|||||||
@ -5,7 +5,7 @@ RAG Service Module for Themblem
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
||||||
from langchain_community.embeddings import HuggingFaceEmbeddings
|
from langchain_huggingface import HuggingFaceEmbeddings
|
||||||
from langchain_community.vectorstores import FAISS
|
from langchain_community.vectorstores import FAISS
|
||||||
from langchain_core.documents import Document
|
from langchain_core.documents import Document
|
||||||
from .models import Article
|
from .models import Article
|
||||||
@ -20,8 +20,21 @@ class CachedLangChainRAG:
|
|||||||
"""基于缓存的实时LangChain RAG服务"""
|
"""基于缓存的实时LangChain RAG服务"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
# Use pre-downloaded model from container (relative to this file)
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Model path relative to this file: api/products/rag_service.py -> ../../models/
|
||||||
|
model_path = Path(__file__).parent.parent.parent / "models" / "text2vec-base-chinese"
|
||||||
|
|
||||||
|
# Fall back to downloading if local model doesn't exist (for development)
|
||||||
|
if not model_path.exists():
|
||||||
|
model_path = "shibing624/text2vec-base-chinese"
|
||||||
|
else:
|
||||||
|
model_path = str(model_path)
|
||||||
|
|
||||||
self.embeddings = HuggingFaceEmbeddings(
|
self.embeddings = HuggingFaceEmbeddings(
|
||||||
model_name="shibing624/text2vec-base-chinese",
|
model_name=model_path,
|
||||||
model_kwargs={'device': 'cpu'},
|
model_kwargs={'device': 'cpu'},
|
||||||
encode_kwargs={'normalize_embeddings': True}
|
encode_kwargs={'normalize_embeddings': True}
|
||||||
)
|
)
|
||||||
|
|||||||
@ -14,6 +14,7 @@ langchain>=0.1.0
|
|||||||
langchain-community>=0.1.0
|
langchain-community>=0.1.0
|
||||||
langchain-core>=0.1.0
|
langchain-core>=0.1.0
|
||||||
langchain-text-splitters>=0.1.0
|
langchain-text-splitters>=0.1.0
|
||||||
|
langchain-huggingface>=0.1.0
|
||||||
sentence-transformers>=2.2.0
|
sentence-transformers>=2.2.0
|
||||||
faiss-cpu>=1.7.4
|
faiss-cpu>=1.7.4
|
||||||
beautifulsoup4>=4.12.0
|
beautifulsoup4>=4.12.0
|
||||||
|
|||||||
24
scripts/download_models.py
Executable file
24
scripts/download_models.py
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Download HuggingFace models for offline use
|
||||||
|
"""
|
||||||
|
from sentence_transformers import SentenceTransformer
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Create models directory relative to this script: scripts/ -> ../models/
|
||||||
|
script_dir = Path(__file__).parent
|
||||||
|
models_dir = script_dir.parent / "models"
|
||||||
|
models_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
# Download the model
|
||||||
|
model_name = "shibing624/text2vec-base-chinese"
|
||||||
|
model_path = models_dir / "text2vec-base-chinese"
|
||||||
|
|
||||||
|
print(f"Downloading model: {model_name}")
|
||||||
|
print(f"Saving to: {model_path}")
|
||||||
|
|
||||||
|
model = SentenceTransformer(model_name)
|
||||||
|
model.save(str(model_path))
|
||||||
|
|
||||||
|
print(f"Model successfully downloaded to {model_path}")
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user