💬
Disponible

AI Assistant

AI Assistant fournit une infrastructure RAG (Retrieval-Augmented Generation) complète et multi-tenant. Chaque tenant dispose de ses propres knowledge bases isolées, alimentées par des documents PDF, DOCX, Markdown ou texte. La recherche hybride combine pgvector (similarité sémantique) et tsvector (recherche full-text PostgreSQL) pour une pertinence optimale. Les réponses sont streamées en SSE (Server-Sent Events) avec des citations précises renvoyant aux passages source. L'architecture multi-tenant garantit l'isolation totale des données entre clients.

RAGpgvectorStreamingCitations

Comment ça marche

1

Création d'une knowledge base

Créez un espace de connaissances isolé pour votre tenant et configurez les paramètres de chunking et d'embedding.

2

Ingestion de documents

Uploadez vos documents (PDF, DOCX, MD, TXT). Ils sont automatiquement découpés, vectorisés et indexés.

3

Requête en langage naturel

Posez votre question. La recherche hybride identifie les passages les plus pertinents dans votre base.

4

Réponse streamée avec citations

L'assistant génère une réponse en streaming SSE, chaque affirmation étant liée à un passage source cité.

Exemple d'appel API

query_knowledge_base.py
import httpx

KB_ID = class="text-teal">"kb_01HQ3V..."

class=class="text-teal">"text-text-faint italic"># Query with streaming
with httpx.stream(
    class="text-teal">"POST",
    fclass="text-teal">"https:class="text-text-faint italicclass="text-teal">">//api.djinn.dev/v1/knowledge-bases/{KB_ID}/query",
    headers={class="text-teal">"X-API-Key": class="text-teal">"djinn_live_..."},
    json={
        class="text-teal">"question": class="text-teal">"Quel est le délai de préavis pour un CDI ?",
        class="text-teal">"max_sources": 5,
        class="text-teal">"stream": True,
    },
) as response:
    for line in response.iter_lines():
        if line.startswith(class="text-teal">"data: "):
            chunk = json.loads(line[6:])
            if chunk[class="text-teal">"type"] == class="text-teal">"text":
                print(chunk[class="text-teal">"content"], end=class="text-teal">"")
            elif chunk[class="text-teal">"type"] == class="text-teal">"citation":
                print(fclass="text-teal">" [{chunk['source']}]", end=class="text-teal">"")

Spécifications techniques

FormatsPDF, DOCX, MD, TXT
Taille max100 MB
Latence P95< 2s (premier token)
SLA99.9%

Prêt à intégrer ce service ?

Testez l'API gratuitement avec 1 000 appels offerts. Intégration en quelques minutes.