AI Agents · Урок

Создание простого RAG с FAISS или Chroma

Напишите 40 строк на Python: преобразуйте запрос в эмбеддинг, найдите K ближайших фрагментов, добавьте их в промпт и задайте вопрос LLM.

Урок 4 из 415 шагов

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

Части этого урока еще не переведены и отображаются на английском.

RAG из 40 строк

Теперь у вас есть все необходимые элементы. Мы соберём их в работающую наивную систему RAG для небольшого набора документов.

Step 1: Install

# pip install openai chromadb

Step 2: Sample Corpus

docs = [
    'Python is a high-level interpreted programming language created by Guido van Rossum in 1991.',
    'Pizza is a savory dish of Italian origin consisting of a round flat base of dough.',
    'The Eiffel Tower is a wrought-iron lattice tower in Paris, France, completed in 1889.',
    'NumPy is a Python library used for working with arrays and numerical computing.',
    'The Great Wall of China is a series of fortifications built across northern China.'
]
print(f"Loaded {len(docs)} documents")
for i, d in enumerate(docs):
    print(f"{i+1}. {d[:50]}...")

Step 3: Set Up Chroma

import chromadb
from openai import OpenAI

client = chromadb.Client()
collection = client.create_collection('demo')
openai_client = OpenAI()

Step 4: Embed and Store

embed_response = openai_client.embeddings.create(
    model='text-embedding-3-small',
    input=docs
)
vectors = [d.embedding for d in embed_response.data]

collection.add(
    ids=[f'd{i}' for i in range(len(docs))],
    embeddings=vectors,
    documents=docs
)

Step 5: Embed the Query

query = 'Tell me about Python programming'
query_vec = openai_client.embeddings.create(
    model='text-embedding-3-small',
    input=query
).data[0].embedding

Step 6: Retrieve Top-K

results = collection.query(
    query_embeddings=[query_vec],
    n_results=2
)
retrieved = results['documents'][0]
print(retrieved)
# ['Python is a high-level...', 'NumPy is a Python library...']

Step 7: Build the RAG Prompt

context = '\n'.join(f'- {chunk}' for chunk in retrieved)
prompt = f'''
Using only the context below, answer the question. If unknown, say so.

Context:
{context}

Question: {query}
'''

Step 8: Call the LLM

response = openai_client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': prompt}],
    temperature=0,
)
print(response.choices[0].message.content)

Альтернатива FAISS

Если вам нужно полностью локальное решение без сервера базы данных, FAISS будет ещё проще:

import faiss
import numpy as np

index = faiss.IndexFlatIP(1536)  # inner product, normalised vectors
index.add(np.array(vectors).astype('float32'))

D, I = index.search(np.array([query_vec]).astype('float32'), k=2)
retrieved = [docs[i] for i in I[0]]

Ограничения этого наивного RAG

  • Нет разбиения на фрагменты — работает только для коротких документов
  • Нет переранжирования
  • Нет фильтрации по метаданным
  • Нет оценки

Всё это мы исправим в следующих курсах.

Стоимость одного запроса

Для каждого запроса:

  • 1 вызов для получения эмбеддинга (примерно $0.00002)
  • 1 запрос к чату с контекстом примерно в 500 токенов (примерно $0.0001)

Итого: около 1/100 цента за вопрос.

Запустите и улучшайте

Этот RAG из 40 строк уже превосходит большинство чат-ботов без контекста в вопросах и ответах по вашим данным. Запустите его, наблюдайте, как пользователи находят его слабые места, а затем добавляйте продвинутые методы там, где они принесут наибольшую пользу.

Наивный RAG: топ-K

Что означает извлечение «топ-K»?

Итоги

Вы создали RAG. Теперь рассмотрим векторные базы данных, которые позволяют масштабировать это решение за пределы одного ноутбука.

Можно начать бесплатно

Изучай AI Agents с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
60
Уроки
239

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

Урок «Создание простого RAG с FAISS или Chroma» бесплатный?

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

Чему я научусь в уроке «Создание простого RAG с FAISS или Chroma»?

Напишите 40 строк на Python: преобразуйте запрос в эмбеддинг, найдите K ближайших фрагментов, добавьте их в промпт и задайте вопрос LLM. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

Сколько времени занимает урок «Создание простого RAG с FAISS или Chroma»?

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

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

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

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

  1. Что решает RAG (ограниченность знаний, галлюцинации)
  2. Стратегии разбиения (фиксированные, по предложениям, семантические)
  3. Индексация набора документов
  4. Создание простого RAG с FAISS или Chroma
← Назад к AI Agents