diff --git a/src/core/ingest.py b/src/core/ingest.py index 520c409..e305d9b 100644 --- a/src/core/ingest.py +++ b/src/core/ingest.py @@ -3,6 +3,7 @@ import logging import re from pathlib import Path +from src.core.config import ChunkConfig from src.core.db import VectorDB from src.core.embedder import Embedder, batch_embed from src.core.splitters.markdown import MarkdownSplitter # 兼容旧 import 路径 @@ -21,11 +22,13 @@ class DocumentIngestor: embedder: Embedder, collection_name: str, splitter: Splitter | None = None, + chunk_config: ChunkConfig | None = None, ): self.db = db self.embedder = embedder self.collection_name = collection_name self.splitter = splitter or MarkdownSplitter() + self.chunk_config = chunk_config or ChunkConfig() @property def collection(self): @@ -43,7 +46,9 @@ class DocumentIngestor: file_name = f"{path_hash}_{path.name}" splitter = self.splitter or get_splitter( - file_path, max_size=1000, overlap=100 + file_path, + max_size=self.chunk_config.max_size, + overlap=self.chunk_config.overlap, ) # PDF/EPUB 二进制文件特殊处理:splitter 内部读取文件 diff --git a/src/server/deps.py b/src/server/deps.py index 941b7a2..04899e6 100644 --- a/src/server/deps.py +++ b/src/server/deps.py @@ -45,7 +45,10 @@ class AppState: name = collection or self.default_collection with self._cache_lock: if name not in self._ingestors: - self._ingestors[name] = DocumentIngestor(self.db, self.embedder, name) + self._ingestors[name] = DocumentIngestor( + self.db, self.embedder, name, + chunk_config=self.config.chunk, + ) return self._ingestors[name] def list_collections_with_stats(self) -> list[dict]: