Вопрос проверяет понимание архитектуры Retrieval-Augmented Generation (RAG) и последовательности этапов обработки запроса от пользователя до генерации ответа.
RAG (Retrieval-Augmented Generation) — это архитектура, которая сочетает поиск информации (retrieval) и генерацию текста (generation). Она позволяет языковой модели отвечать на вопросы, используя внешние источники знаний, что повышает точность и актуальность ответов.
import openai
from sentence_transformers import SentenceTransformer
import numpy as np
# Шаг 1: Векторизация запроса
model = SentenceTransformer('all-MiniLM-L6-v2')
query = "Как работает RAG?"
query_embedding = model.encode(query)
# Шаг 2: Поиск в векторной БД (имитация)
documents = ["RAG объединяет поиск и генерацию.", "LLM использует контекст для ответа."]
doc_embeddings = model.encode(documents)
scores = np.dot(doc_embeddings, query_embedding)
top_indices = np.argsort(scores)[-2:]
context = " ".join([documents[i] for i in top_indices])
# Шаг 3: Генерация ответа
prompt = f"Контекст: {context}\nВопрос: {query}\nОтвет:"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
print(response.choices[0].message.content)RAG эффективен в задачах, где требуется актуальная или специфическая информация, недоступная в обучении модели. Он применяется в чат-ботах поддержки, системах вопрос-ответ по документации и поисковых ассистентах, обеспечивая точность и прозрачность ответов.