Агент с 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