Агент с RAG‑памятью: chunker.py
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
<|channel|>final code<|message|>```python
|
||||
# chunker.py
|
||||
"""
|
||||
Модуль для разбиения больших текстов на небольшие чанки.
|
||||
Использует RecursiveCharacterTextSplitter из LangChain.
|
||||
|
||||
Публичный API:
|
||||
split_text(text: str, chunk_size: int = 1000, chunk_overlap: int = 200) -> List[str]
|
||||
"""
|
||||
|
||||
from typing import List
|
||||
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
||||
|
||||
|
||||
def split_text(
|
||||
text: str,
|
||||
*,
|
||||
chunk_size: int = 1000,
|
||||
chunk_overlap: int = 200,
|
||||
) -> List[str]:
|
||||
"""
|
||||
Разбивает входной текст на чанки заданного размера с перекрытием.
|
||||
|
||||
Args:
|
||||
text: Текст, который нужно разбить.
|
||||
chunk_size: Максимальная длина одного чанкa (по символам).
|
||||
chunk_overlap: Количество символов, которые будут пересекаться между
|
||||
соседними чанками. Позволяет сохранить контекст при поиске.
|
||||
|
||||
Returns:
|
||||
Список строк – чанков текста.
|
||||
"""
|
||||
if not isinstance(text, str):
|
||||
raise TypeError("text must be a string")
|
||||
|
||||
splitter = RecursiveCharacterTextSplitter(
|
||||
chunk_size=chunk_size,
|
||||
chunk_overlap=chunk_overlap,
|
||||
separators=["\n\n", "\n", " ", ""],
|
||||
)
|
||||
return splitter.split_text(text)
|
||||
Reference in New Issue
Block a user