Векторные хранилища: Chroma и FAISS
Создание и сохранение векторных хранилищ, поиск по сходству, извлечение MMR, гибридный поиск
«Векторные хранилища: Chroma и FAISS» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Что такое векторное хранилище?
Векторное хранилище содержит преобразованные векторы фрагментов и находит наиболее похожие на вектор запроса. Это поисковая система в основе RAG. Два популярных варианта — Chroma и FAISS.
pip install langchain-chroma faiss-cpuСоздание хранилища Chroma
Chroma.from_documents преобразует ваши фрагменты в векторы и индексирует их одним вызовом. Передайте документы и объект для создания векторных представлений. Chroma вернёт хранилище, в котором сразу можно выполнять поиск.
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)Сохранение Chroma на диске
Передайте persist_directory, чтобы индекс сохранялся на диске и не исчезал после перезапуска. Позже загрузите его, создав Chroma с тем же каталогом и теми же векторными представлениями, и избежите повторных затрат на преобразование.
db = Chroma.from_documents(
chunks, embeddings,
persist_directory="./chroma_db"
)
# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)Поиск по сходству
Выполняйте запрос с помощью similarity_search(query, k=4). Метод преобразует запрос в вектор, находит k ближайших фрагментов и возвращает их как документы. Параметр k определяет количество найденных отрывков.
results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
print(doc.page_content[:80])Оценки результатов поиска
Используйте similarity_search_with_score, чтобы также получать оценку расстояния для каждого результата. Чем меньше расстояние, тем больше сходство. Оценки помогают отфильтровать слабые совпадения перед отправкой результатов в LLM.
pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
print(round(score, 3), doc.page_content[:60])Знакомство с FAISS
FAISS (поиск сходства с помощью искусственного интеллекта Facebook) — высокопроизводительная библиотека для поиска по векторам. Она чрезвычайно быстра и экономно расходует память, поэтому идеально подходит для больших локальных индексов без отдельного сервера.
Создание хранилища FAISS
Интерфейс похож на Chroma: FAISS.from_documents создаёт индекс. FAISS хранит индекс в памяти, поэтому отлично подходит для поиска внутри процесса, в котором преобладают операции чтения.
from langchain_community.vectorstores import FAISS
db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)Сохранение и загрузка FAISS
Сохраняйте индекс FAISS с помощью save_local, а загружайте его с помощью load_local. Для загрузки требуется allow_dangerous_deserialization=True, поскольку индекс использует pickle.
db.save_local("faiss_index")
db = FAISS.load_local(
"faiss_index", embeddings,
allow_dangerous_deserialization=True
)Релевантность и разнообразие
Обычный поиск по сходству может вернуть четыре почти одинаковых фрагмента. Иногда нужны разнообразные результаты, охватывающие разные аспекты ответа. В этом помогает MMR.
Поиск с помощью MMR
Максимальная маржинальная релевантность (MMR) уравновешивает релевантность и разнообразие, выбирая релевантные, но не дублирующие друг друга фрагменты. Используйте search_type="mmr" через интерфейс средства поиска.
retriever = db.as_retriever(
search_type="mmr",
search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")Выбор между Chroma и FAISS
Chroma удобна, поддерживает сохранение данных и хорошо подходит для прототипов и небольших приложений. FAISS быстрее при работе с большими объёмами и идеальна для поиска в памяти. Обе системы предоставляют similarity_search и as_retriever, поэтому перейти с одной на другую легко.
Быстрая проверка
Проверьте свои знания о векторных хранилищах.
Повторение: Chroma и FAISS
Вы создали векторные хранилища с помощью Chroma.from_documents (используя persist_directory) и FAISS.from_documents, выполняли поиск с помощью similarity_search(query, k=4), а также сохраняли и загружали оба хранилища. Вы использовали as_retriever с MMR, чтобы получать разнообразные результаты, и научились выбирать подходящее хранилище.
Часто задаваемые вопросы
Урок «Векторные хранилища: Chroma и FAISS» бесплатный?
Да — полный текст урока «Векторные хранилища: Chroma и FAISS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Векторные хранилища: Chroma и FAISS»?
Создание и сохранение векторных хранилищ, поиск по сходству, извлечение MMR, гибридный поиск Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Векторные хранилища: Chroma и FAISS»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Архитектура LangChain и LCEL
- Загрузка, разбиение и эмбеддинг документов
- Векторные хранилища: Chroma и FAISS
- Создание системы вопросов и ответов RAG от начала до конца