Вопрос проверяет понимание преимуществ векторного поиска над традиционными методами полнотекстового поиска.
Векторный поиск — это метод поиска, основанный на представлении объектов (текстов, изображений, аудио) в виде плотных числовых векторов — эмбеддингов. В отличие от традиционного полнотекстового поиска (например, по индексу в SQL или Elasticsearch), который ищет точные совпадения слов или фраз, векторный поиск оценивает семантическую близость между запросом и документами. Это позволяет находить релевантные результаты, даже если в них нет ни одного общего слова с запросом.
import faiss
import numpy as np
from sentence_transformers import SentenceTransformer
# Загружаем модель для создания эмбеддингов
model = SentenceTransformer('all-MiniLM-L6-v2')
# Наши документы
documents = [
"Быстрый автомобиль разгоняется до 100 км/ч за 3 секунды",
"Скоростная машина имеет мощный двигатель",
"Сегодня хорошая погода для прогулки"
]
# Создаём эмбеддинги
doc_embeddings = model.encode(documents)
# Строим индекс FAISS (L2 расстояние)
dimension = doc_embeddings.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(doc_embeddings)
# Запрос
query = "мощный автомобиль"
query_embedding = model.encode([query])
# Поиск 2 ближайших соседей
distances, indices = index.search(query_embedding, k=2)
print("Результаты:")
for idx in indices[0]:
print(documents[idx])В этом примере на запрос "мощный автомобиль" будут найдены первые два документа, несмотря на отсутствие точного совпадения слов.
Вывод: Векторный поиск незаменим, когда важна семантическая релевантность, а не точное совпадение ключевых слов. Он особенно полезен в системах с неструктурированными данными, мультиязычным контентом и высокими требованиями к скорости.