Создание простого RAG с FAISS или Chroma
Напишите 40 строк на Python: преобразуйте запрос в эмбеддинг, найдите K ближайших фрагментов, добавьте их в промпт и задайте вопрос LLM.
«Создание простого 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 chromadbStep 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].embeddingStep 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 — локальная установка не требуется.
Все уроки этого курса
- Что решает RAG (ограниченность знаний, галлюцинации)
- Стратегии разбиения (фиксированные, по предложениям, семантические)
- Индексация набора документов
- Создание простого RAG с FAISS или Chroma