brain.encoders — Кодировщики модальностей¶
Преобразование входных данных в векторные представления. Аналог сенсорных кортексов.
TextEncoder¶
Кодировщик текста с 4 режимами работы:
| Режим | Описание | Зависимости |
|---|---|---|
tfidf |
TF-IDF на основе словаря | встроен |
hash |
Feature hashing (MurmurHash) | встроен |
navec |
Предобученные русские эмбеддинги | navec |
sentence_transformers |
Многоязычные трансформеры | sentence-transformers |
TextEncoder
¶
Minimal Text Encoder для text-only MVP.
Основной режим: sentence-transformers (768d) Fallback: navec mean-pooled (300d) Degraded: нулевой вектор + warning
Использование
encoder = TextEncoder() result = encoder.encode_event(percept_event) result = encoder.encode("Нейрон — это клетка нервной системы")
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_name
|
str
|
имя sentence-transformers модели |
DEFAULT_MODEL
|
use_fallback
|
bool
|
пытаться ли загрузить navec при неудаче основной модели |
True
|
cache_enabled
|
bool
|
включить in-memory кэш по SHA256(text) |
True
|
encode
¶
encode(text: str, source: str = 'user_input', quality: float = 1.0, trace_id: str = '', session_id: str = '', cycle_id: str = '') -> EncodedPercept
Удобный wrapper: кодирует строку → EncodedPercept.
encode_batch
¶
Batch encoding: кодирует список PerceptEvent. Для primary mode использует batch-inference sentence-transformers.
Пример использования¶
from brain.encoders.text_encoder import TextEncoder
# Режим по умолчанию (tfidf — без внешних зависимостей)
encoder = TextEncoder(mode="tfidf")
result = encoder.encode("что такое нейрон?")
print(result.vector[:5]) # [0.12, 0.0, 0.34, ...]
print(result.mode) # "tfidf"
# Режим hash (детерминированный, без обучения)
encoder = TextEncoder(mode="hash", vector_dim=256)
result = encoder.encode("нейрон — базовая единица нервной системы")
# Режим navec (русские эмбеддинги, требует pip install cognitive-core[nlp])
encoder = TextEncoder(mode="navec", navec_path="navec_hudlit_v1_12B.tar")
result = encoder.encode("нейрон")
print(len(result.vector)) # 300
EncodedPercept¶
Результат кодирования описан в contracts: EncodedPercept.