Skip to content

Présentation de WeKnora ​

WeKnora est un système open source de questions-réponses sur base de connaissances, publié par Tencent. Il permet d’importer des PDF, Word, pages web et des contenus depuis Feishu, Notion, Confluence, Yuque, DingTalk, etc. Les utilisateurs posent des questions sur ces sources et consultent les citations vers le texte original dans les réponses.

Le système repose sur la génération augmentée par récupération (RAG) : les documents sont analysés et indexés, puis des passages pertinents sont récupérés pour que un grand modèle de langage produise la réponse.

L’architecture comprend un backend Go, une interface Vue 3 et le service Python docreader pour l’analyse documentaire. Déploiement possible via Docker Compose, Helm, binaire Lite ou application de bureau.

Interface principale WeKnora : bases de connaissances et sessions à gauche, zone de Q&R à droite
Interface principale WeKnora : bases de connaissances et sessions à gauche, zone de Q&R à droite

Nouveautés v0.9.0 ​

Détails complets et exigences de montée de version : notes de version v0.9.0.

Cas d’usage ​

BesoinFonctionnalité
Formats variés, PDF scannés ou tableaux difficiles à structurerPipeline documentaire : mise en page PDF, OCR, conversion Office, capture web, description d’images ; parsing hybride OpenDataLoader/Docling en option
Rappel instable avec la seule recherche vectorielleHybride vecteur + mots-clés (BM25), fusion RRF, rerank ; GraphRAG et navigation Wiki en option
Dépendance à un seul fournisseur de modèlesCouche d’abstraction : Ollama local et nombreux fournisseurs intégrés (OpenAI compatible, Anthropic Messages, Gemini natif, etc.) ; LLM / Embedding / Rerank / VLM / ASR ; voir Gestion des modèles
Sécurité et déploiement privéStack entièrement auto-hébergeable ; secrets (clés API, etc.) chiffrés AES-256 au repos (SYSTEM_AES_KEY) ; multi-tenant + RBAC
Tâches multi-étapes et outilsAgent ReAct, outils MCP, Agent Skills en sandbox, recherche web (SearXNG, etc.), analyse de données (SQL sur CSV/Excel)
Travail d’équipeEspaces (tenants), rôles membres, organisations pour partager bases et agents entre espaces, invitations

Concepts clés ​

Les bases de connaissances regroupent les sources ; l’espace de travail gère membres et droits ; l’agent choisit modèles et outils pour répondre. Les termes ci-dessous correspondent à l’interface ; définitions complètes dans internal/types/.

Tenant et identité ​

ConceptDescription
TenantEspace de travail : bases, modèles, agents, sessions, quotas de stockage. Voir Espace et permissions
UserCompte de connexion ; un utilisateur peut rejoindre plusieurs espaces
TenantMemberAppartenance à un espace, avec rôle et statut
TenantRoleOwner, Admin, Contributor, Viewer — droits dans l’espace
API Key (TenantAPIKey)Accès programmatique, capacités et périmètre de bases ; clés espace vs plateforme gérées séparément
OrganizationRelie plusieurs espaces ; partage de bases et d’agents selon les rôles organisationnels

Domaine connaissance ​

ConceptDescription
KnowledgeBaseRegroupe les sources ; modèles, découpage et index. Types document, FAQ, Wiki
KnowledgeFichier, page web ou contenu saisi dans une base ; statut de parsing après ingestion
ChunkUnité de recherche après parsing : texte, image, tableau, etc.
FAQQuestions standard, similaires, contre-exemples et réponses ; voir FAQ
WikiPagePage thématique générée depuis les docs, citations et liens, édition et versions
Entity / RelationshipEntités et relations pour le graphe (Neo4j), recherche associée
DataSourceSync continue depuis l’extérieur : Feishu/Lark, Notion, Confluence, Yuque, DingTalk, Tencent IMA, GitLab, RSS ; voir Import de sources
RetrievalConfigNombre de candidats, seuils, pondérations de fusion, rerank ; voir Moteurs de recherche

Dialogue et agents ​

ConceptDescription
SessionHistorique multi-tours, agent, modèles, périmètre de connaissance et outils
MessageQuestion ou réponse ; pièces jointes, citations, résultats d’outils
ModelConnexion LLM, embedding, rerank, vision ou ASR ; voir Gestion des modèles
CustomAgentAgent personnalisé : modèles, sources, outils ; Q&R rapide ou raisonnement avancé
Agents intégrésQ&R rapide, raisonnement, analyse de données, Wiki ; voir Moteur Agent
Skills et sandboxCatalogue d’skills, installation selon sandbox, liaison à l’agent ; Docker/Cube/E2B, variables perso ; voir Skills et sandbox
Mémoire long termePréférences et faits par espace et appelant ; désactivée par défaut ; voir Mémoire
MCPServiceOutils externes pour l’agent ; SSE et Streamable HTTP ; auth API Key, Bearer ou OAuth 2.0

Schéma des relations ​

Liste des fonctionnalités ​

  • Ingestion : upload (PDF, Office, Markdown, HTML, EPUB, XMind, images, audio…), URL, Markdown saisi, dossiers entiers ; sync Feishu/Lark, Notion, Confluence, Yuque, DingTalk, IMA, GitLab, RSS.
  • Compréhension documentaire : mise en page, OCR, tableaux, description multimodale (VLM), transcription (ASR), moteurs par type (ParserEngineRules, MinerU / OpenDataLoader).
  • Indexation : découpage configurable (parent/enfant, adaptatif), index vectoriel et full-text, FAQ, génération Wiki, graphe, questions pré-générées.
  • Recherche : hybride vecteur + BM25, RRF, rerank, reformulation et extension, intention (greeting, chitchat, web_search… — config/prompt_templates/intent_prompts.yaml).
  • Q&R et Agent : SSE, compression de contexte, citations ; ReAct (search_knowledge, read_document, list_documents, wiki_search, data_analysis…), MCP, Agent Skills (Docker/Cube/E2B), recherche web.
  • Expérience de chat : contraintes en cours de réponse, bifurcation ou rollback depuis l’historique (checkpoints sandbox), intensité de réflexion par session, page « artefacts » ; voir Expérience de session.
  • Multi-tenant et sécurité : RBAC (WEKNORA_TENANT_ENABLE_RBAC), audit (90 j par défaut), modes d’inscription (ouvert, invite_register, invite_only / DISABLE_REGISTRATION=true), OIDC, SSRF (SSRF_DNS_WHITELIST_ONLY), chiffrement AES-256. UI : zh simplifié/traditionnel, en, ja, ko, ru.
  • Observabilité : traçage Langfuse, health checks, Swagger si GIN_MODE=debug.
  • Écosystème : REST /api/v1 + clé API, MCP Server intégré par espace (MCP), CLI, mini-programme WeChat, extension navigateur, navigateur local. Lite (macOS) exécute des commandes agent en sandbox locale.

Composants système ​

ComposantStackCodePortRôle
appGo / Gincmd/server, internal/8080API REST, RAG, Agent, tâches Asynq
frontendVue 3 + Nginxfrontend/80Console web, proxy /api vers app
docreaderPython / gRPCdocreader/50051 (réseau conteneur)Fichiers → Markdown, web, images
postgresParadeDB (PG 17 + BM25/vecteur)paradedb/paradedb5432Métadonnées + recherche hybride (RETRIEVE_DRIVER=postgres)
redisRedis 7—6379Flux SSE, file Asynq
sandboxPython 3.12 + Node 20docker/Dockerfile.sandbox—Image sandbox Agent Skills
Option : qdrant / milvus / weaviate / doris—profiles composediversMoteurs vectoriels (RETRIEVE_DRIVER)
Option : opensearch—docker-compose.dev.yml9200Dev ; prod : cluster dédié
Option : elasticsearch / tencent_vectordb—hors compose—Support code, déploiement manuel
Option : neo4jNeo4jprofile neo4j7474 / 7687Graphe (GraphRAG)
Option : minioMinIOprofile minio9000 / 9001Objet S3 (STORAGE_TYPE=minio)
Option : searxngSearXNGprofile searxng8888Moteur web self-hosted
Option : langfuseLangfuse 3 + CH + MinIOprofile langfuse3000Observabilité LLM
Option : mcp (déprécié)Pythonmcp-server/, profile full8082Ancien MCP ; préférer MCP intégré dans app
Option : odl-hybridDoclingprofile odl-hybrid5002PDF hybride OpenDataLoader

Suite ​

Documentation issue de WeKnora v0.9.0 · MIT License