0Pricing
Learn AI with Python · Урок

Введение в векторные базы данных

Зачем нужны векторные базы данных, как использовать FAISS для локального поиска по сходству и хранить эмбеддинги для извлечения данных искусственным интеллектом.

«Введение в векторные базы данных» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

За пределами точных совпадений

Традиционные базы данных находят строки по точным значениям (WHERE name = "x"). Но ИИ работает с эмбеддингами — векторами, отражающими смысл, — и часто нужно найти элементы, наиболее похожие на запрос, а не точные совпадения.

Векторные базы данных предназначены для быстрого поиска по сходству.

Что такое эмбеддинг

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

Семантический поиск, рекомендации и генерация с дополнением контекста (RAG) основаны на эмбеддингах.

import numpy as np

# A toy 4-dim embedding for a sentence
vec = np.array([0.12, -0.43, 0.88, 0.05], dtype="float32")
print(vec.shape)   # (4,)

Почему не обычная база данных

Сравнивать запрос с миллионами векторов с помощью перебора в цикле медленно. Векторные базы данных используют специализированные индексы и вычисления расстояний, чтобы за миллисекунды возвращать ближайших соседей.

Они также масштабируются, сохраняют данные и обрабатывают метаданные вместе с векторами.

Измерение сходства

Близость измеряется с помощью метрики расстояния:

  • L2 (евклидово) — расстояние по прямой; чем меньше, тем ближе
  • Косинусная — угол между векторами; хорошо подходит для текста

FAISS поддерживает несколько метрик; мы будем использовать L2.

Знакомство с FAISS

FAISS (Facebook AI Similarity Search) — быстрая бесплатная библиотека для векторного поиска. Она работает локально, без сервера, поэтому идеально подходит для обучения и создания прототипов.

import faiss
import numpy as np
# pip install faiss-cpu

Создание индекса с помощью IndexFlatL2

IndexFlatL2(dim) создаёт плоский индекс (перебор, точный поиск), использующий расстояние L2. Необходимо указать размерность векторов.

«Плоский» означает получение точных результатов — это идеально для небольших и средних наборов данных.

import faiss

dim = 4
index = faiss.IndexFlatL2(dim)
print(index.is_trained)   # True (flat index needs no training)

Добавление векторов с помощью index.add

Передайте эмбеддинги в виде двумерного массива NumPy типа float32 с формой (n, dim). index.add сохраняет их, а index.ntotal сообщает их количество.

import numpy as np

embeddings = np.random.random((100, dim)).astype("float32")
index.add(embeddings)
print(index.ntotal)   # 100

Поиск с помощью index.search

index.search(query, k) возвращает k ближайших векторов. Он возвращает два массива: расстояния D и индексы I (позиции в порядке добавления).

query = np.random.random((1, dim)).astype("float32")
D, I = index.search(query, k=5)
print("nearest ids:", I[0])
print("distances:", D[0])

От индексов к элементам

FAISS возвращает позиции, а не исходные данные. Храните параллельный список (или базу данных), сопоставляющий позицию в индексе с реальным элементом, чтобы можно было найти элементы по результатам.

docs = ["doc about cats", "doc about dogs", "doc about cars"]
# after search:
for pos in I[0]:
    print(docs[pos])   # map id -> original document

Небольшой конвейер семантического поиска

Полная схема такова: создайте эмбеддинги документов, добавьте их в индекс, создайте эмбеддинг запроса, выполните поиск и верните подходящие документы. (Модели эмбеддингов, такие как sentence-transformers, создают эти векторы.)

import faiss, numpy as np

# doc_vectors: (n, dim) from an embedding model
index = faiss.IndexFlatL2(doc_vectors.shape[1])
index.add(doc_vectors)

# query_vec: (1, dim) embedding of the user query
D, I = index.search(query_vec, k=3)
results = [docs[i] for i in I[0]]
print(results)

Когда использовать векторную базу данных

Используйте векторную базу данных, когда вам нужны:

  • семантический поиск по тексту или изображениям
  • рекомендации на основе сходства
  • RAG: извлечение релевантного контекста для LLM

FAISS отлично подходит для локальной работы; управляемые решения (Pinecone, Weaviate, pgvector) добавляют постоянное хранение и масштабируемость.

Быстрая проверка: поиск с FAISS

Вы вызываете index.search(query, k=5) для индекса FAISS.

Итоги: векторные базы данных

Вы изучили основы поиска по сходству:

  • Эмбеддинги располагают похожие элементы рядом друг с другом в векторном пространстве
  • Векторные базы данных ускоряют поиск ближайших соседей при работе с большими объёмами данных
  • FAISS с помощью IndexFlatL2(dim) создаёт точный индекс L2
  • index.add(embeddings) сохраняет векторы, а index.search(query, k) возвращает расстояния и индексы
  • Сопоставляйте возвращённые индексы с исходными элементами

На этом изучение баз данных завершено. Далее: структурирование проектов с ИИ с помощью Git.

Часто задаваемые вопросы

Урок «Введение в векторные базы данных» бесплатный?

Да — полный текст урока «Введение в векторные базы данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Введение в векторные базы данных»?

Зачем нужны векторные базы данных, как использовать FAISS для локального поиска по сходству и хранить эмбеддинги для извлечения данных искусственным интеллектом. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Введение в векторные базы данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. SQLite с модулем sqlite3 Python
  2. Интеграция Pandas и SQL
  3. Хранение и запрос результатов машинного обучения
  4. Введение в векторные базы данных
← Назад к Learn AI with Python