векторов: сохраните векторы в формате, поддерживаемом Faiss или Pinecone.
Пример кода:
```python
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')
texts = ["Когнитивное программирование – это…", "Основы работы сознания…"]
vectors = model.encode(texts)
# Сохранение вектора в базе
import faiss
index = faiss.IndexFlatL2(len(vectors[0]))
index.add(vectors)
```
Практические примеры для этапа векторизации данных
1.5.1 Векторизация текстов с использованием Word2Vec
Пример: Генерация векторов для отдельных слов
Если ваша база знаний включает много специализированных терминов, используйте Word2Vec для создания векторов слов, которые отражают их контекстное значение.
```python
from gensim.models import Word2Vec
# Пример текстов
sentences = [
["когнитивное", "программирование", "оптимизация"],
["командное", "взаимодействие", "модель"],
]
# Обучение Word2Vec модели
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
# Получение вектора для слова "когнитивное"
vector = model.wv["когнитивное"]
print(vector)
```
Этот метод подходит для задач, где требуется анализ отдельных слов или построение простой семантической карты.
1.5.2 Sentence Embeddings для предложений и абзацев
Пример: Создание векторов для поисковой системы
Если пользователь задает запрос в свободной форме, используйте Sentence Transformers для создания векторов предложений.
```python
from sentence_transformers import SentenceTransformer
import numpy as np
# Загрузка модели
model = SentenceTransformer("all-MiniLM-L6-v2")
# Пример текстов
texts = [
"Когнитивное программирование помогает улучшить корпоративное мышление.",
"Модели взаимодействия команд основаны на когнитивных процессах."
]
# Создание векторов
vectors = model.encode(texts)
print("Размер векторов:", np.array(vectors).shape)
```
Эти векторы можно использовать для сравнения текстов по косинусному сходству.
1.5.3 Использование BERT для учета контекста
Пример: Векторизация с учетом контекста слов в предложении
BERT позволяет учитывать контекст слова, что особенно важно для терминов с несколькими значениями.
```python
from transformers import BertTokenizer, BertModel
import torch
# Загрузка модели и токенизатора
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertModel.from_pretrained("bert-base-uncased")
# Пример текста
text = "Cognitive programming improves team performance."
tokens = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
# Получение эмбеддингов
with torch.no_grad():
embeddings = model(**tokens).last_hidden_state
sentence_embedding = torch.mean(embeddings, dim=1)
print(sentence_embedding.shape)
```
Этот подход особенно полезен для сложных текстов, где значение слова зависит от контекста.
1.5.4 Построение индекса для быстрого поиска
Пример: Интеграция с Faiss для поиска релевантных данных
Создайте индекс векторов и настройте алгоритм поиска ближайших соседей.
```python
import