Практические примеры для этапа векторизации данных


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 faiss


# Создание индекса

dimension = vectors.shape[1] # Размерность векторов

index = faiss.IndexFlatL2(dimension) # L2-норма

index.add(vectors) # Добавление векторов в индекс


# Пример запроса

query_vector = model.encode(["Какие преимущества дает когнитивное программирование?"])

distances, indices = index.search(query_vector, k=2) # Поиск 2 ближайших соседей

print("Результаты поиска:", indices)


```


Этот метод значительно ускоряет обработку запросов в базе знаний.


1.5.5 Векторизация с использованием Pinecone для облачных решений


Пример: Развертывание векторного индекса в Pinecone


Если объем данных велик и требуется облачное решение, используйте Pinecone для управления индексами.


```python


import pinecone


# Инициализация Pinecone

pinecone.init(api_key="your-api-key", environment="us-west1-gcp")


# Создание индекса

index = pinecone.Index("cognitive-programming")


# Добавление векторов

for i, vector in enumerate(vectors):

index.upsert([(str(i), vector)])


# Поиск

query_vector = model.encode(["Как оптимизировать командное мышление?"])

results = index.query(query_vector, top_k=2, include_metadata=True)

print(results)


```


Этот инструмент подходит для масштабируемых приложений, где требуется быстрая обработка запросов.


1.5.6 Применение векторных операций


Пример: Группировка данных по смыслу


Используйте кластеризацию для группировки схожих векторов.


```python


from sklearn.cluster import KMeans


# Кластеризация

num_clusters = 3

kmeans = KMeans(n_clusters=num_clusters, random_state=42)

kmeans.fit(vectors)


# Назначение кластеров текстам

labels = kmeans.labels_

for text, label in zip(texts, labels):

print(f"Текст: {text} → Кластер: {label}")

```


Эта техника помогает структурировать базу знаний для более точного поиска.


Эти примеры демонстрируют различные подходы к векторизации данных, их оптимизации и интеграции, обеспечивая основу для эффективной работы когнитивного тренажера.


Заключение


На этапе подготовки данных ключевым является:


1. Сбор только релевантной информации.


2. Очистка и структурирование для дальнейшего поиска.


3. Преобразование текстов в векторные представления, оптимизированные для быстрого поиска в системе RAG.

Загрузка...