Pourquoi le RAG ? Dans OpenWebUI, le RAG, ou génération à enrichissement contextuel, permet à l'utilisateur d'interroger ses propres documents en langage naturel et d'obtenir une réponse contextualisée, actualisable et appuyée sur les passages retrouvés, sans réentraîner le modèle.
🧭 Pourquoi PostgreSQL / pgvector plutôt que Qdrant ?

PostgreSQL avec pgvector est retenu comme backend nominal : pgvector fait partie des backends vectoriels maintenus par l'équipe cœur d'OpenWebUI, tandis que Qdrant y est une intégration non cœur, maintenue par la communauté — ce qui augmente le risque de rupture ou de délai de correction lors d'une montée de version d'OpenWebUI. Qdrant reste une solution vectorielle valide, conservée comme repli.

Autre facteur, le stockage : les données actives de Qdrant n'ont pas été retenues sur le partage ZFS présenté à VM210 (via VirtioFS/FUSE) et devaient rester sur un ext4 local à la VM ; PostgreSQL/pgvector dispose sur VM215 de son propre disque ext4 dédié, mieux isolé pour l'exploitation et la future sauvegarde logique.

Architecture répartie : l'inférence et le calcul des embeddings s'exécutent sur le nœud IA GPU (VM210, RTX 5090). Le stockage vectoriel est déporté sur une VM de services sans GPU (VM215) hébergeant PostgreSQL et pgvector. Cette séparation limite les dépendances et facilite la sauvegarde du backend vectoriel.
[Documents] → [Découpage + Embeddings bge-m3 · GPU VM210] → [PostgreSQL / pgvector · VM215]
                                                ↓
[Question] → [Embedding requête] → [Recherche sémantique HNSW] → [LLM local Ollama] → [Réponse citée]
🔧 Stack technique
ComposantRôleVersion
Open WebUIInterface + orchestration RAG native0.11.0
PostgreSQLBackend vectoriel (VM215)18.4
pgvectorExtension vecteurs · index HNSW0.8.6
bge-m3Embeddings multilingues (dim 1024)via Ollama
OllamaInférence LLM (VM210 · RTX 5090)0.32.6
QdrantBase vectorielle de repli1.18.3
✅ Réalisations démontrées
  • Open WebUI configuré avec pgvector comme backend vectoriel
  • Modèle d'embeddings bge-m3 validé en dimension 1024
  • Index HNSW créé sur les vecteurs
  • Recherche exacte et citations vérifiées
  • Comportement hors-corpus testé pour limiter les réponses inventées
  • Persistance validée après recréation de l'interface et redémarrage des deux VM
⚙️ Configuration Open WebUI → pgvector (illustrative)
env — backend vectoriel pgvector
# Open WebUI — RAG natif sur backend pgvector (VM215)
VECTOR_DB=pgvector
PGVECTOR_DB_URL=postgresql://<role>:<secret>@<hote-vm215>/rag

# Embeddings servis par Ollama sur le nœud GPU (VM210)
RAG_EMBEDDING_ENGINE=ollama
RAG_EMBEDDING_MODEL=bge-m3        # dimension 1024
sql — index de similarité HNSW (pgvector)
-- Index HNSW pour la recherche vectorielle rapide (distance cosinus)
CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops);
Portée & limites : les validations reposent sur un corpus entièrement synthétique — il ne s'agit pas d'un jeu de données métier. Qdrant est conservé comme solution de repli (non supprimé) tant que le retrait n'est pas clôturé. Le nettoyage final des collections de test et le point de restauration de clôture restent à effectuer.

Pages liées

Références & Sources

CatégorieRessourceURL
Documentation officiellepgvector — extension de recherche vectorielle pour PostgreSQLgithub.com/pgvector/pgvector
Documentation officielleOpen WebUI — RAG & bases vectoriellesdocs.openwebui.com
Modèle d'embeddingsBAAI/bge-m3 — multilingue, dimension 1024huggingface.co/BAAI/bge-m3
Versions utiliséesOpen WebUI 0.11.0 · PostgreSQL 18.4 · pgvector 0.8.6 · Ollama 0.32.6 · Qdrant 1.18.3 (repli)—
Licencepgvector — PostgreSQL License · PostgreSQL — PostgreSQL Licensepostgresql.org/about/licence
Contenu de cette pagePartagé sous CC BY-SA 4.0creativecommons.org/licenses/by-sa/4.0