« RAGFlow » : différence entre les versions
De Le Wiki de Lug
Autres actions
Aucun résumé des modifications |
|||
| (21 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
== Installation == | == Installation == | ||
On utilise [[Docker# | {{Méta bandeau | ||
| niveau = grave | |||
| icône = important | |||
| texte = | |||
Avertissement : l’installation de RAGFlow via Docker dans un conteneur LXC Proxmox peut échouer à cause de certaines limites système définies dans le fichier Docker Compose, notamment le réglage <code>ulimits.memlock</code>. L’erreur associée est généralement : <code>error setting rlimit type 8: operation not permitted</code>. | |||
}} | |||
{{Méta bandeau | |||
| niveau = modéré | |||
| icône = important | |||
| texte = | |||
Pour contourner ce problème dans un environnement de test ou homelab léger, il est généralement possible de commenter le bloc <code>ulimits.memlock</code> dans le fichier <code>docker-compose-base.yml</code>. Cette modification peut réduire certaines optimisations liées au verrouillage de la mémoire, notamment pour les services de recherche ou d’indexation comme Elasticsearch, OpenSearch ou Infinity. L’impact reste généralement limité si la machine dispose de suffisamment de RAM et n’utilise pas ou peu le swap. | |||
}} | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = | |||
Pour une installation plus stable et durable, il est recommandé d’installer RAGFlow dans une machine virtuelle Debian dédiée plutôt que dans un Docker imbriqué dans un conteneur LXC. | |||
}} | |||
On utilise [[Docker|Docker]] | |||
* On installe git si nécessaire (exemple avec Debian) : | |||
# apt update && apt upgrade | |||
# apt install git | |||
* On récupère le projet : | |||
# cd /opt/ | |||
# git clone <nowiki>https://</nowiki>github.com/infiniflow/ragflow.git | |||
# cd /opt/ragflow/docker | |||
* On [[RAGFlow#Exemple_de_configuration|édite la configuration]] si nécessaire : | |||
# vi .env | |||
* On lance le conteneur : | |||
# docker compose -f docker-compose.yml up -d | |||
=== Suppression du bloc <code>ulimits</code> pour usage via LXC === | |||
# cd /opt/ragflow/docker/ | |||
# vi docker-compose-base.yml | |||
Commenter le bloc suivant : | |||
<font color = grey>...</font> | |||
<font color = blue>#</font>ulimits: | |||
<font color = blue>#</font>memlock: | |||
<font color = blue>#</font>soft: -1 | |||
<font color = blue>#</font>hard: -1 | |||
<font color = grey>...</font> | |||
On lance le conteneur : | |||
# docker compose -f docker-compose.yml up -d | |||
=== Configuration === | |||
==== Supprimer l’enregistrement des utilisateurs ==== | |||
# vi /opt/ragflow/docker/.env | |||
<font color = grey>...</font> | |||
REGISTER_ENABLED=<font color = blue>0</font> | |||
<font color = grey>...</font> | |||
On relance les conteneurs : | |||
# cd /opt/ragflow/docker/ | |||
# docker compose -f docker-compose.yml up -d | |||
==== Modèles par défaut ==== | |||
Via le menu "Fournisseurs de modèles" | |||
[[File:Ragflow modeles.webp|border|Menu de sélection des modèles IA..]] | |||
* <code>Modèle de chat</code> : modèle principal utilisé pour répondre aux questions et générer les réponses finales. C’est le champ le plus important. Sans modèle de chat, RAGFlow ne peut pas produire de réponse conversationnelle. | |||
* <code>Modèle d'embedding</code> : modèle utilisé pour transformer les documents et les requêtes en vecteurs. Il sert à retrouver les passages pertinents dans la base documentaire. Ce champ est indispensable pour utiliser le RAG avec une recherche sémantique correcte. | |||
* <code>Modèle Img2txt</code> : modèle utilisé pour convertir une image en texte. Il peut servir pour l’OCR, les captures d’écran, les images intégrées dans des documents ou certaines pages PDF scannées. Il n’est pas indispensable si les documents sont déjà au format texte, mais il devient important pour les documents visuels ou scannés. | |||
* <code>Modèle Speech2txt</code> : modèle utilisé pour convertir de l’audio en texte. Il sert à transcrire des fichiers audio ou vidéo avant leur indexation. Il est inutile si aucun contenu audio n’est utilisé. | |||
* <code>Modèle de rerank</code> : modèle utilisé pour réordonner les passages retrouvés par le modèle d’embedding. L’embedding récupère une liste de résultats candidats, puis le reranker remet les meilleurs passages en haut. Ce champ est fortement recommandé pour améliorer la précision des réponses RAG, surtout quand la base documentaire contient beaucoup de chunks proches ou similaires. | |||
* <code>Modèle TTS</code> : modèle utilisé pour convertir les réponses texte en audio. Il est uniquement nécessaire si l’on souhaite une sortie vocale. | |||
Voir [[Llama.cpp#Modèles_RAG|modèles pour RAG via Llama.cpp]] | |||
{{Méta bandeau | |||
| niveau = modéré | |||
| icône = important | |||
| texte = | |||
RAGFlow ne supporte pas encore les modèles OCR via le fournisseur <code>OpenAI-API-Compatible</code>. Un modèle comme <code>LightOnOCR-2-1B</code> servi avec <code>llama-server</code> peut fonctionner côté serveur, mais ne peut pas être ajouté directement comme modèle <code>OCR</code> dans RAGFlow via ce fournisseur. Les modèles OpenAI-compatibles peuvent être utilisés pour le chat, l’embedding ou le rerank, mais pas encore pour l’OCR. | |||
}} | |||
==== RAGFlow comme serveur MCP ==== | |||
{{Méta bandeau | |||
| niveau = grave | |||
| icône = important | |||
| texte = | |||
Une clef API doit avoir été générée au préalable via le menu : <code>API</code> -> <code>Clé API</code> -> <code>Créer une nouvelle clé</code>. | |||
}} | |||
# cd /opt/ragflow/docker/ | |||
# vi docker-compose.yml | |||
<font color = grey>... | |||
command: | |||
- --enable-adminserver | |||
- --init-model-provider-tables</font> | |||
- --enable-mcpserver | |||
- --mcp-host=0.0.0.0 | |||
- --mcp-port=9382 | |||
- --mcp-base-url=<nowiki>http://</nowiki>127.0.0.1:9380 | |||
- --mcp-script-path=/ragflow/mcp/server/server.py | |||
- --mcp-mode=self-host | |||
- --mcp-host-api-key=<font color = blue>ragflow-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</font> | |||
<font color = grey>...</font> | |||
Optionnellement, il est possible de limiter l’exposition du port MCP à une seule interface de l’hôte Docker : | |||
<font color = grey>... | |||
-</font> <font color = blue>192.168.1.123</font>:<font color = grey>${SVR_MCP_PORT}:9382 # entry for MCP (host_port:docker_port). The docker_port must match the value you set for `mcp-port` above. | |||
...</font> | |||
# docker compose up -d | |||
== Première connexion == | |||
Il faut se rendre sur l'adresse <nowiki>http://</nowiki><font color = blue>IP_SERVEUR</font> avec l'identifiant administrateur par défaut : | |||
admin@ragflow.io | |||
admin | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = important | |||
| texte = | |||
Il est recommandé de changer le mot de passe administrateur après la première connexion. | |||
}} | |||
Dernière version du 8 juillet 2026 à 15:35
Installation
On utilise Docker
- On installe git si nécessaire (exemple avec Debian) :
# apt update && apt upgrade # apt install git
- On récupère le projet :
# cd /opt/ # git clone https://github.com/infiniflow/ragflow.git # cd /opt/ragflow/docker
- On édite la configuration si nécessaire :
# vi .env
- On lance le conteneur :
# docker compose -f docker-compose.yml up -d
Suppression du bloc ulimits pour usage via LXC
# cd /opt/ragflow/docker/ # vi docker-compose-base.yml
Commenter le bloc suivant :
...
#ulimits:
#memlock:
#soft: -1
#hard: -1
...
On lance le conteneur :
# docker compose -f docker-compose.yml up -d
Configuration
Supprimer l’enregistrement des utilisateurs
# vi /opt/ragflow/docker/.env
... REGISTER_ENABLED=0 ...
On relance les conteneurs :
# cd /opt/ragflow/docker/ # docker compose -f docker-compose.yml up -d
Modèles par défaut
Via le menu "Fournisseurs de modèles"
Modèle de chat: modèle principal utilisé pour répondre aux questions et générer les réponses finales. C’est le champ le plus important. Sans modèle de chat, RAGFlow ne peut pas produire de réponse conversationnelle.
Modèle d'embedding: modèle utilisé pour transformer les documents et les requêtes en vecteurs. Il sert à retrouver les passages pertinents dans la base documentaire. Ce champ est indispensable pour utiliser le RAG avec une recherche sémantique correcte.
Modèle Img2txt: modèle utilisé pour convertir une image en texte. Il peut servir pour l’OCR, les captures d’écran, les images intégrées dans des documents ou certaines pages PDF scannées. Il n’est pas indispensable si les documents sont déjà au format texte, mais il devient important pour les documents visuels ou scannés.
Modèle Speech2txt: modèle utilisé pour convertir de l’audio en texte. Il sert à transcrire des fichiers audio ou vidéo avant leur indexation. Il est inutile si aucun contenu audio n’est utilisé.
Modèle de rerank: modèle utilisé pour réordonner les passages retrouvés par le modèle d’embedding. L’embedding récupère une liste de résultats candidats, puis le reranker remet les meilleurs passages en haut. Ce champ est fortement recommandé pour améliorer la précision des réponses RAG, surtout quand la base documentaire contient beaucoup de chunks proches ou similaires.
Modèle TTS: modèle utilisé pour convertir les réponses texte en audio. Il est uniquement nécessaire si l’on souhaite une sortie vocale.
Voir modèles pour RAG via Llama.cpp
RAGFlow comme serveur MCP
# cd /opt/ragflow/docker/ # vi docker-compose.yml
...
command:
- --enable-adminserver
- --init-model-provider-tables
- --enable-mcpserver
- --mcp-host=0.0.0.0
- --mcp-port=9382
- --mcp-base-url=http://127.0.0.1:9380
- --mcp-script-path=/ragflow/mcp/server/server.py
- --mcp-mode=self-host
- --mcp-host-api-key=ragflow-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
...
Optionnellement, il est possible de limiter l’exposition du port MCP à une seule interface de l’hôte Docker :
...
- 192.168.1.123:${SVR_MCP_PORT}:9382 # entry for MCP (host_port:docker_port). The docker_port must match the value you set for `mcp-port` above.
...
# docker compose up -d
Première connexion
Il faut se rendre sur l'adresse http://IP_SERVEUR avec l'identifiant administrateur par défaut :
admin@ragflow.io admin