Dev & Engineering ragretrieval-augmented-generationvector-databasechromadbqdrantollamahybrid-searchmcp

RAGLight

A lightweight, modular Python RAG framework with pluggable LLMs, embeddings, and vector stores, making document-grounded AI easy to assemble and deploy.

FollowAgents review · FARS-2.1
Use with care
63/ 100 5-point scale 3.2 / 5
1 2 3 4 5 6
1Trust17 / 29 · 2.9/5

Credentials are handled via env vars/.env.example with no hardcoded secrets visible in the evidence; data flows (local folders, GitHub URLs, vector stores, MCP servers) are documented reasonably clearly. Deductions: no user-confirmation mechanism for agentic or MCP tool actions; the dependency-review workflow explicitly allowlists four known GHSA advisories, an unmitigated bypass of known vulnerabilities; the /ingest endpoint lets a server clone arbitrary GitHub repos with no rollback/recovery story; no documented citation/attribution of retrieved sources in answers.

2Reliability6 / 14 · 2.1/5

README and pyproject are broadly self-consistent (version 3.4.7, extras table matches optional deps). Deductions: tests/__init__.py must fake langgraph.prebuilt.tool_node symbols for langchain 1.2.0 to import, evidencing a real dependency-compatibility defect; 'unsafe-best-match' index strategy in CI increases dependency drift; failure messages and error paths are barely evidenced.

3Adaptability12 / 18 · 3.3/5

Serves novices (raglight chat wizard) through pipeline developers, with multiple providers (Ollama/OpenAI/Gemini/Mistral/Bedrock/vLLM) and Windows-specific notes; audience and scenarios are well covered. Deductions: agent tool-selection/trigger precision is delegated to a default prompt with no evidence; capability boundaries (max corpus size, indexing performance) are not quantified.

4Convention14 / 18 · 3.9/5

README is well structured (TOC, install, CLI, API, Docker, env-var tables, many examples), pyproject metadata is clean, and the full MIT license is present. Deductions: no CHANGELOG — version exists only in pyproject; no known-limitations section, only scattered caveats; CI auto-committing black-formatted code into PRs is review-hostile; single maintainer (Bessouat40) with limited evidence of long-term upkeep.

5Effectiveness10 / 13 · 3.8/5

Strong output usability: streaming, multi-turn history, CLI wizard, Streamlit UI, REST + Swagger; marginal value lies in modular RAG plus MCP integration. Deductions: cost/benefit is dragged down by the mandatory base dependency list (streamlit, fastapi, transformers, sentence-transformers all installed by default), contradicting the 'lightweight' positioning, and no evidence substantiates retrieval-quality or comparative gains.

6Verifiability4 / 8 · 2.5/5

Dependency/feature claims in README largely cross-check against pyproject, and CI badges map to real workflow files. Deductions: promotional claims ('improve RAG performances') lack benchmarks or third-party corroboration and rest on README self-description; the tests/ evidence is thin (config constants plus a compatibility stub), with no visible tests for core pipelines, reducing verifiability.

Evidence confidence: Low Reviewed Sep 10, 2026 Reviewed revision 155cee5d8f06
Before you use it
  • The CI dependency-review workflow allowlists four known GHSA advisories (GHSA-f4j7-r4q5-qw2c etc.); verify independently whether these affect your dependency versions before deploying.
  • raglight serve binds 0.0.0.0:8000 by default with no documented auth, and /ingest triggers server-side GitHub cloning and arbitrary directory indexing — do not expose it publicly.
  • No user confirmation or tool allowlisting exists for agentic/MCP interactions; any configured MCP server gains the capabilities granted in its config.
  • The base dependency set is heavy (streamlit, fastapi, transformers installed by default), and test code reveals a langchain/langgraph compatibility issue; upgrade with care.
  • No CHANGELOG; version history must be inferred from pyproject, and core pipeline test coverage is not visible in the evidence.
Review evidence [1][2][3][4][5][6][7]
See the full review method →

What does this agent do, and when should you use it?

RAGLight is a Python library for building Retrieval-Augmented Generation applications, unifying document retrieval and LLM inference through both a Builder API and high-level RAGPipeline / AgenticRAGPipeline classes. It is LLM-agnostic, supporting Ollama, LMStudio, vLLM, OpenAI, Mistral, Google Gemini, and AWS Bedrock, with ChromaDB and Qdrant as vector stores that can run locally on disk or remotely over HTTP. Beyond the standard RAG pipeline, it ships an Agentic RAG pipeline that can reach external tools such as code execution and databases via MCP servers. Deployment options include an interactive CLI wizard (raglight chat / raglight agentic-chat), a FastAPI REST server (raglight serve, optionally with a Streamlit chat UI), and Docker / Docker Compose. Retrieval features cover semantic, BM25, and RRF hybrid search, query reformulation, multi-turn conversation history, token-level streaming, and end-to-end tracing with Langfuse.

RAGLight ingests local folders or GitHub repositories (FolderSource / GitHubSource), parses PDF, TXT, DOCX, and code files using built-in extension-based processors (PDFProcessor, CodeProcessor, TextProcessor — overridable, including a VLM-based PDF processor), embeds them, and writes them into a ChromaDB or Qdrant collection in local or remote mode. At query time it runs reformulate → retrieve → rerank → generate: it rewrites follow-up questions into standalone queries, retrieves via semantic, BM25, or hybrid (RRF-fused) search, then generates an answer with the selected LLM. APIs include the RAGPipeline / AgenticRAGPipeline high-level classes and the chained Builder (with_embeddings / with_vector_store / with_llm); AgenticRAGConfig accepts an mcp_config parameter for MCP server integration. The CLI offers raglight chat and raglight agentic-chat wizards; raglight serve starts a FastAPI server exposing /health, /generate, /ingest, /ingest/upload, /collections, and /config endpoints, all configured via RAGLIGHT_* environment variables, with --ui launching a Streamlit chat interface alongside. All providers support generate_streaming() and a max_history-capped conversation history, and every generate() call can be traced in Langfuse as a trace with per-node spans.

  1. A developer who wants a private, local document Q&A system (e.g. Ollama + Qdrant) where data never leaves the machine
  2. A backend team exposing enterprise knowledge bases as a REST API so other apps can query documents via the /generate endpoint
  3. An engineer with existing OpenAI, Mistral, or Gemini API keys who wants to swap LLM providers with minimal component changes
  4. A multi-turn chat application where users ask follow-ups like 'and for Python?', needing query reformulation and conversation history
  5. A retrieval-system maintainer whose pure vector search recall is insufficient and wants BM25 + semantic RRF hybrid fusion
  6. An Agentic RAG experimenter who wants to attach external tools such as code execution or database access via MCP servers

What are this agent's strengths and limitations?

Pros
  • Fully pluggable LLM and vector store: seven LLM providers (Ollama, LMStudio, vLLM, OpenAI, Mistral, Gemini, Bedrock) and two vector stores (Chroma, Qdrant) combine freely, avoiding vendor lock-in
  • Retrieval goes beyond basic RAG: BM25 + semantic + RRF hybrid search, query reformulation, and optional reranking improve accuracy in multi-turn scenarios
  • Complete deployment story: CLI wizard, FastAPI REST service, Streamlit UI, and Docker/Docker Compose cover everything from personal trials to production serving
  • MCP integration via a single mcp_config parameter lets the agent call external tools (code execution, database access)
  • Built-in Langfuse observability traces retrieve, rerank, and generate end-to-end per call
Limitations
  • The ChromaDB backend requires a C++ compiler on Windows, raising setup cost (Qdrant sidesteps this)
  • Cloud providers (OpenAI, Mistral, Gemini, Bedrock) all require API keys or credentials, and LMStudio requires models pre-loaded
  • Langfuse tracing needs the extra raglight[langfuse] install plus a configured Langfuse service (e.g. localhost:3000), otherwise tracing is unavailable
  • Newer Claude models on Bedrock require cross-region inference profile IDs (us./eu./ap. prefixes), adding configuration detail
  • The README provides no benchmarks or performance data; retrieval gains (e.g. from RRF) are unquantified and need in-house validation

How do you install or deploy this agent?

Base install: pip install raglight

Install extras only for what you need:

pip install "raglight[qdrant]"           # Qdrant (pure Python, Windows-friendly)
pip install "raglight[chroma]"           # ChromaDB (requires a C++ compiler on Windows)
pip install "raglight[chroma,qdrant]"    # both
pip install "raglight[qdrant,langfuse]"  # Qdrant + observability

For local inference, run Ollama and pull a model first. For cloud providers, set the relevant API key environment variable (MISTRAL_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY) or configure AWS credentials (env vars, ~/.aws/credentials, or IAM role) for Bedrock. If using LMStudio, load the target model in LMStudio beforehand.

How do you use this agent?

Fastest start — CLI wizard (requires a running Ollama):

raglight chat        # interactive setup: data source, ignore folders, vector DB, embeddings, LLM
raglight agentic-chat

Deploy the REST API:

raglight serve --port 8000 --ui      # FastAPI + Swagger(/docs) + Streamlit UI on 8501
RAGLIGHT_LLM_MODEL=mistral-small-latest RAGLIGHT_LLM_PROVIDER=Mistral raglight serve

Python high-level API:

from raglight.rag.simple_rag_api import RAGPipeline
from raglight.config.settings import Settings
from raglight.config.rag_config import RAGConfig
from raglight.config.vector_store_config import VectorStoreConfig
from raglight.models.data_source_model import FolderSource, GitHubSource
vector_store_config = VectorStoreConfig(

embedding_model=Settings.DEFAULT_EMBEDDINGS_MODEL,
provider=Settings.HUGGINGFACE,
database=Settings.CHROMA,
persist_directory='./defaultDb',

collection_name=Settings.DEFAULT_COLLECTION_NAME)

config = RAGConfig(llm=Settings.DEFAULT_LLM, provider=Settings.OLLAMA, k=5,

knowledge_base=[FolderSource(path='./docs'), GitHubSource(url='https://github.com/Bessouat40/RAGLight')])
pipeline = RAGPipeline(config, vector_store_config)
pipeline.build()
print(pipeline.generate('your question'))

Alternatively use the chained Builder: Builder().with_embeddings(...).with_vector_store(...).with_llm(...).build_rag(k=5). For Docker, see examples/Dockerfile.example and run with --add-host=host.docker.internal:host-gateway to reach a host Ollama instance.

How does this agent compare with similar options?

The README names no direct competitors, but RAGLight overlaps with frameworks like LangChain and LlamaIndex; its differentiators are the lightweight footprint, the turnkey wizard-style CLI and REST deployment, and first-class Agentic RAG with MCP integration — a fit for teams who don't want a heavy orchestration framework.

FAQ

Do I need internet access or paid API keys?
No. Ollama or LMStudio allow fully local operation with no API keys. Keys are only needed for cloud providers (OpenAI, Mistral, Gemini, AWS Bedrock), and costs are incurred with whichever provider you choose.
Which document formats are supported?
Built-in processors handle PDF, TXT, MD, HTML, DOCX, and code files (Python, JavaScript, TypeScript, Java, C++, C#). Code is additionally parsed for signatures into a separate collection (collection_name_classes). You can override processors via custom_processors, e.g. using a VLM for diagram-heavy PDFs.
Any Windows deployment caveats?
Choose raglight[qdrant] (pure Python client) instead of raglight[chroma] (needs a C++ compiler). Both local on-disk and remote server vector store modes are supported. When running in Docker and calling a host Ollama, use --add-host=host.docker.internal:host-gateway.
How is MCP integration configured?
Pass mcp_config to AgenticRAGConfig, e.g. mcp_config=[{"url": "http://127.0.0.1:8001/sse"}]. The agent then calls external tools (code execution, database access, etc.) via MCP. Server setup follows the smolagents MCPClient.server_parameters documentation.
Is streaming and conversation history supported across all providers?
Yes. generate_streaming() works token-by-token on Ollama, OpenAI, vLLM, LMStudio, Mistral, Google Gemini, and AWS Bedrock. Conversation history defaults to the last 20 messages (~10 turns); adjust via max_history or set None for unlimited.

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents