RagChat transforms unstructured data for LLM interaction.
Project description
RagChat
RagChat enables interaction between large language models and unstructured data. It addresses challenges such as dynamic content updates, varied data sources, and retrieval accuracy by using an upsert-first architecture, filtering mechanisms, and a combination of knowledge graphs with vector search. It supports multi-user, custom models, and self-hosting to provide operational control.
Features
- Upsert-first design: Supports constant updates.
- Flexible metadata filtering: Information retrieval allows using custom fields.
- Efficient knowledge graph: Graph is built using small models, promoting efficiency and scalability.
- Multiuser support: Knowledge bases can be isolated or shared.
- Language consistency: Prompts and examples use the specified language, improving reliability.
- Async batch processing: Ingestion of multiple documents can be done in parallel with streaming progress updates.
- Pluggable LLMs and Embedding models: Supports the use of custom models or connection to API endpoints; providers are easily swappable.
- Open source & self-hostable: Operation occurs locally in Docker or directly on a machine, ensuring privacy.
Use Cases
- Casual chat sessions with memories
- Technical documentation search
- Chat+file hybrid RAG with citations
- Personal use
- Multi-user setups
Quick start
Docker Compose is required for the easiest setup.
Install RagChat with pip:
pip install ragchat-ai
Recommended local models:
bge-m3for embeddingsqwen3:8borqwen3:4bfor LLM -- Make sure 8k context length is supported.
Configure environment variables:
git clone https://github.com/raul3820/ragchat.git
cd ragchat
cp .env.example .env
Example: Open Webui
Run dependencies with:
docker compose up --build
After startup, the web chat UI is accessible at http://localhost:3001 (refer to .env for port).
Retrieval will be applied to all models. Two flows are presented:
- Casual chat with memories (default)
- Formal RAG with citations (triggered by writing
#in the chat and selecting a file)
For file ingestion use: http://localhost:3001/workspace/knowledge
Example: Lihua benchmark with Python SDK
Run dependencies with:
docker compose up neo4j --build
Once the DB has started, run the file ingestion with:
python -m examples.lihua.step0_index
and the Q&A with
python -m examples.lihua.step1_qa
Contributing
Contributions welcomed! Please see the CONTRIBUTING.md file for details on how to contribute.
- Bug reports (issues)
- Feature suggestions
- Pull requests (inclusion of tests requested)
Roadmap
Performance:
- Quick retrieval
- Hybrid search
- Multi-hop entity search
- Query intent classification
- Recency weighting
- Better reranking
- Structured aggregates
- 3 phase ingestion (bm25, summaries, fact-entities)
- Graph traversal
- Custom tuning
Flows:
- Chat
- File
- Group chat
- Code
- Web search
Integrations:
- Python SDK
- REST API server
- Neo4j
- Qdrant
- Memgraph? (lower priority)
- Docling
- MCP
- Open-Webui (pipelines)
Testing & Evals:
- LiHua benchmark setup
- LiHua benchmark comparison with other libraries
- Integration test
- Increase test coverage
Security:
- Custom fields sanitization
Documentation:
- Readme/Quick start
- Library documentation
- API documentation
Open Source & License
RagChat is MIT-licensed (see LICENSE). Self-hosting and extension are permitted. Certain features may require user-provided LLM/API keys.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ragchat_ai-0.2.0.tar.gz.
File metadata
- Download URL: ragchat_ai-0.2.0.tar.gz
- Upload date:
- Size: 66.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d8f8bf745f3b4b2917742c58c4b8787e8935957f3fac586ea00a10c459c070d
|
|
| MD5 |
0ce730b7d246a0e86291c5fec42475bd
|
|
| BLAKE2b-256 |
3aa65eb74a0f3c28f786b5d158c8a8987a9f9ec14d4c965d69b33563454d12f6
|
File details
Details for the file ragchat_ai-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ragchat_ai-0.2.0-py3-none-any.whl
- Upload date:
- Size: 69.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5e21d5f65ec0a2a8ac629d71e7f619803332f55c0c029403ecd29d24764c28e
|
|
| MD5 |
8b0addedfa7ae70f1e321dcef9d5d5c4
|
|
| BLAKE2b-256 |
01509480daba7b3c906bcbaccbb07bee92b642cddbaf3a6e12c5a232c767986f
|