尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證IBM Bob 2.0 — RAG Evolution Factory. An IBM Bob-powered autonomous engineering system that creates, evaluates, diagnoses and improves RAG agents through a closed-loop workflow. 4 MCP tools: FACTORY, GUARDIAN, AUTOPSY, CHANGELAB. Live: https://rag-saas-platform-rho.vercel.app
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
IBM BOB 2.0 — RAG EVOLUTION FACTORY
An IBM Bob-powered autonomous engineering system that creates, evaluates, diagnoses and improves RAG agents through a closed-loop workflow.
IBM Bob is the autonomous engineering brain.
RAG Evolution Factory is the orchestration system.
The RAG platform is the real environment Bob operates, measures and evolves.
MCP is the control interface between Bob and the platform.
🌐 Live demo: https://rag-saas-platform-rho.vercel.app
🔧 Live API: https://rag-saas-api-sjsm.onrender.com
📖 Submission doc: docs/ibm_bob_2/SUBMISSION.md檢視完整 README ↗A multi-tenant platform for building, evaluating and operating retrieval-augmented (RAG) assistants on your own documents — with verifiable citations, strict tenant isolation, built-in cost control, and a quality loop that measures every change instead of guessing.
🌐 Live app: https://rag-saas-platform-rho.vercel.app 🔧 Live API: https://rag-saas-api-sjsm.onrender.com
The supplied read-only observation of the remote general-dotenv database
is revision 0130, postgres/BYPASSRLS, 178 public tables (12 without RLS),
zero policies, no workspaces.description, pgvector 0.8.2. A complete
custom pg_dump backup was taken before changes (local, Git-ignored;
restore unverified). The assistant tool refused production migration
execution. The operator must run
.venv\Scripts\python.exe -m alembic upgrade head (0131 then 0132)
BEFORE deploying code. RLS without policies does not block the bypass
API role and does not prove runtime RLS isolation. Historical test data
(63/71 users @example.com; 1523/1576 organizations named "test", September
11 to October 2) has a proposed, NOT executed cleanup.
Deployment settings: DISCORD_GATEWAY_SHARED_SECRET (mandatory X-Gateway-Secret for Discord gateway messages); TEAMS_BOT_ID (Microsoft token audience, otherwise 401); METRICS_AUTH_TOKEN for Internet-facing deployments; AGENT_MEMORY_AUTO_EXTRACT=false (enabling adds an LLM call); PGVECTOR_ITERATIVE_SCAN / PGVECTOR_MAX_SCAN_TUPLES; and LICENSE_VALIDATE_RATE_LIMIT_MAX_ATTEMPTS / LICENSE_VALIDATE_RATE_LIMIT_WINDOW_SECONDS. Partner registration now requires accept_terms, rate limiting and password checks. n8n/Airbyte status requires login. The unimplemented ANSWER_RELEVANCE_USE_LLM, CONTEXT_RELEVANCE_USE_LLM and CLAIM_VERIFICATION_USE_LLM settings refuse startup if enabled.
OPA now uses an internal HTTP client (opa-python-client removed for aiofiles incompatibility). pyjwt 2.15.0, Next 16.3.8; supplied npm audit: zero advisories. WeasyPrint 65 advisories remain mitigated by escaping and deny-all resource fetching; diskcache from dspy has no reported fix. Iterative HNSW scanning is implemented; the 100/1000/10000-document measurement is IN PROGRESS, not a performance claim. BM25 reloads every organization text per request (O(N)).
An organization signs up, uploads documents (or connects its sources), configures one or more assistants, and gets:
It is designed to be self-hosted (Docker) or run as a SaaS.
/v1 API with Python / JavaScript / React / Vue SDKs, SSE streaming| Layer | Choice |
|---|---|
| API | FastAPI (Python 3.11), SQLAlchemy 2.0 async, Alembic |
| Data | PostgreSQL (Supabase) + pgvector, Redis |
| Jobs | Celery + Redis |
| LLM access | LiteLLM — Anthropic, OpenAI, Mistral, Gemini, Ollama, watsonx, any OpenAI-compatible endpoint |
| Frontend | Next.js 16, React, TypeScript, Tailwind |
| Observability | Prometheus, Grafana, Sentry |
Snapshot measured on 2026-10-03: 100 router modules, 936 registered API operations (781 OpenAPI paths), 132 Alembic migration files and 177 ORM tables and 399 Python test files. These are local source/metadata counts, not a deployed database inventory. See autonomous discovery for the file inventory and final status for executed tests and unresolved blockers.
Staging verified on 2026-10-04 (Supabase project <STAGING_PROJECT_REF>,
not local Docker): Alembic 0132, 178 public tables including
alembic_version, pgvector 0.8.2, and the chunk HNSW index.
The revision was also verified visually in Supabase Table Editor.
The local API connected to this staging reports database/rate-limit Redis/cache
readiness OK. Two browser-created users and organizations successfully logged in;
cross-organization reads returned 404 in both directions.
Nine representative staging IDOR tests passed using these same tenants
(zero skips). These are bounded authentication/authorization checks, not
exhaustive tenant-isolation or RLS certification.
See staging evidence and reproduction.
git clone https://github.com/naomytcheums-dotcom/rag-saas-platform.git
cd rag-saas-platform
cp .env.example .env # then fill in the secrets
./install.sh
docker compose -f docker-compose.selfhosted.yml up -d
python -m venv venv && source venv/bin/activate
pip install -r requirements-api.txt -r requirements-optional.txt
alembic upgrade head
uvicorn api.main:app --reload
cd frontend && npm install && npm run dev
The API image installs the lazily loaded integrations in
requirements-optional.txt by default. A minimal image can explicitly use
docker build -f Dockerfile.api --build-arg INSTALL_OPTIONAL_RAG_DEPS=0 .;
features requiring those packages then remain unavailable.
python scripts/check_optional_deps.py verifies API import with all nine
optional module roots blocked, without connecting to a database.
Start at docs/index.md.
| Topic | Where |
|---|---|
| Architecture | ARCHITECTURE.md, docs/architecture/ |
| API reference | docs/api/ |
| Deployment | docs/DEPLOYMENT_GUIDE.md |
| Terminology | GLOSSARY.md |
| Roadmap and the dated log of every fix | ROADMAP.md |
| Product requirements and history | docs/CAHIER_DES_CHARGES.md |
pytest tests/ -x
pytest tests/ --cov=api --cov-report=term-missing
cd frontend && npm run lint && npm run type-check
The suite is large and loads real embedding / vision models; on a machine with limited RAM run it in sequential batches (one pytest process per group of files) rather than as a single process. Tests that need an external provider (Stripe, Paystack, Google Drive, a real Tesseract binary, …) skip themselves when it is not configured — they are reported as skipped, never as passed.
Every behavioural fix is recorded in ROADMAP.md with its test and what was actually executed, including what was written but not yet run.
This section is deliberately explicit:
.venv. Run started at 20:51:26 and ended at 23:49:27 local time.
The 54 skipped integration checks and 23 deselected tests are not
certified. Frontend: 116/116 passed, type-check passed, lint zero errors
and warnings.
See individual failure register
and current final status. Earlier backend counts
are retained in dated historical entries, not current results.scripts/retrieval_benchmark.py measured the portable (non-pgvector) retrieval path at 100 and 1,000 documents (see ROADMAP.md for the numbers and the fixes they drove). It does not yet cover 10,000 documents, the PostgreSQL pgvector/HNSW path, or the HTTP layer under concurrent users. Keyword (BM25) search is still computed per query over the organization's chunks, so very large corpora need a persistent full-text index (planned, requires a migration).See CONTRIBUTING.md and CODE_OF_CONDUCT.md. Report vulnerabilities as described in SECURITY.md.
MIT — see LICENSE.
History: this project was once entered in the IBM Bob 2.0 contest; that material is preserved in docs/ibm_bob_2/CONTEST_README.md.