Розробка RAG з векторною базою даних ChromaDB

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка RAG з векторною базою даних ChromaDB
Простий
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1305
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1214
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    916
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1144
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    608
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    881

Розробка 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 тижні