Разработка RAG с векторной базой данных ChromaDB

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка RAG с векторной базой данных ChromaDB
Простая
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка RAG с векторной базой данных ChromaDB

ChromaDB — открытая векторная база данных, ориентированная на простоту использования. Не требует внешних зависимостей для локального запуска, поддерживает in-memory и persistent режимы. ChromaDB — стандартный выбор для прототипирования RAG-систем и небольших production-деплоев (до нескольких миллионов документов).

Запуск и подключение

import chromadb
from chromadb.utils import embedding_functions

# In-memory (для разработки и тестов)
client = chromadb.EphemeralClient()

# Persistent (файловое хранилище)
client = chromadb.PersistentClient(path="./chroma_db")

# HTTP-сервер (production)
client = chromadb.HttpClient(host="localhost", port=8000)

Создание коллекции и индексация

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

embedding_fn = OpenAIEmbeddingFunction(
    api_key="...",
    model_name="text-embedding-3-small"
)

collection = client.get_or_create_collection(
    name="knowledge_base",
    embedding_function=embedding_fn,
    metadata={"hnsw:space": "cosine"}  # Метрика сходства
)

# Добавление документов
collection.add(
    documents=["Текст чанка 1", "Текст чанка 2", ...],
    metadatas=[
        {"source": "contract.pdf", "page": 1, "doc_type": "contract"},
        {"source": "faq.md", "page": 0, "doc_type": "faq"},
    ],
    ids=["chunk_001", "chunk_002", ...]
)

RAG-запрос

from openai import OpenAI

openai_client = OpenAI()

def rag_answer(question: str, n_results: int = 4) -> str:
    # Поиск релевантных чанков
    results = collection.query(
        query_texts=[question],
        n_results=n_results,
        where={"doc_type": {"$in": ["contract", "regulation"]}},  # Фильтр
    )

    context = "\n\n".join(results["documents"][0])

    # Генерация ответа
    response = openai_client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": "Отвечай только на основе контекста."},
            {"role": "user", "content": f"Контекст:\n{context}\n\nВопрос: {question}"}
        ],
        temperature=0,
    )
    return response.choices[0].message.content

answer = rag_answer("Какой срок действия договора?")

Сроки

  • Прототип RAG с ChromaDB: 2–5 дней
  • Production-версия с мониторингом: 2–3 недели