{"id":32786766,"url":"https://github.com/cerno-ai/cerno-insight","last_synced_at":"2025-11-08T08:01:35.422Z","repository":{"id":322099644,"uuid":"1087876166","full_name":"Cerno-AI/Cerno-Insight","owner":"Cerno-AI","description":"High-performance RAG system for intelligent document Q\u0026A with hybrid retrieval, GPU acceleration, and citation-backed answers. Upload docs, ask questions, get precise responses.","archived":false,"fork":false,"pushed_at":"2025-11-02T15:38:16.000Z","size":33774,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-02T16:16:42.601Z","etag":null,"topics":["artificial-intelligence","bm25","docker","document-processing","embeddings","faiss","fastapi","llms","local-first","machine-learning","natural-language-processing","nextjs","openai","python","rag","rag-pipeline","reranking","retreival-augmented-generation","semantic-search","typescript"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cerno-AI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-01T20:31:59.000Z","updated_at":"2025-11-02T16:16:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Cerno-AI/Cerno-Insight","commit_stats":null,"previous_names":["cerno-ai/cerno-insight"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Cerno-AI/Cerno-Insight","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cerno-AI%2FCerno-Insight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cerno-AI%2FCerno-Insight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cerno-AI%2FCerno-Insight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cerno-AI%2FCerno-Insight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cerno-AI","download_url":"https://codeload.github.com/Cerno-AI/Cerno-Insight/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cerno-AI%2FCerno-Insight/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282762578,"owners_count":26723111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-05T02:00:05.946Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artificial-intelligence","bm25","docker","document-processing","embeddings","faiss","fastapi","llms","local-first","machine-learning","natural-language-processing","nextjs","openai","python","rag","rag-pipeline","reranking","retreival-augmented-generation","semantic-search","typescript"],"created_at":"2025-11-05T05:01:35.017Z","updated_at":"2025-11-05T05:03:06.174Z","avatar_url":"https://github.com/Cerno-AI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cerno insight\n\n\u003cdiv align=\"center\"\u003e\n\n![Cerno Insight Banner](https://img.shields.io/badge/Cerno-Insight-blue?style=for-the-badge)\n\n**A high-performance RAG system for intelligent document Q\u0026A**\n\n[![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com/)\n[![Next.js](https://img.shields.io/badge/Next.js-14+-black.svg)](https://nextjs.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\n\n[Features](#-key-features) • [Quick Start](#-quick-start) • [Documentation](#-documentation) • [Contributing](#-contributing)\n\n\u003c/div\u003e\n\n---\n\n## 🎯 Overview\n\nA high-performance Retrieval-Augmented Generation (RAG) system for intelligent document processing and question-answering. Upload documents in multiple formats and ask questions to get precise, citation-backed answers using state-of-the-art Language Models and hybrid retrieval strategies.\n\n![Cerno Insight Interface](screenshots/screenshot.png)\n\n**Quick Start**: `docker compose up --build -d` → Visit http://localhost:3000\n\n📖 **Full Documentation**: See [Explanation.md](./Explanation.md) for technical deep-dive\n\n## 🚀 Quick Start\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/cerno-ai/cerno-insight.git\ncd cerno-insight\n\n# 2. Set up environment\ncp .env.sample .env\n# Add your GOOGLE_API_KEY to .env\n\n# 3. Run with Docker (recommended)\ndocker compose up --build -d\n\n# 4. Access the app\n# Frontend: http://localhost:3000\n# Backend API: http://localhost:8000/docs\n```\n\nThat's it! Upload a document and start asking questions. 🎉\n\n\n\n## Table of Contents\n\n- [Key Features](#key-features)\n- [Technical Stack](#technical-stack)\n- [Project Structure](#project-structure)\n- [Configuration](#configuration)\n- [Performance Metrics](#performance-metrics)\n- [Error Handling](#error-handling)\n- [Deployment](#deployment)\n- [How It Works](#how-it-works)\n- [Installation](#installation)\n- [Use Cases](#use-cases)\n- [Future Roadmap](#future-roadmap)\n\n##  Key Features\n\n### Multi-Format Document Processing\n- **PDF, DOCX, PPTX, XLSX, TXT, Markdown, CSV** support\n- **Image OCR** with Tesseract (PNG, JPEG, BMP, TIFF, GIF, WebP)\n- **Raw text/HTML** fetching from URLs\n- **Smart semantic chunking** with overlap for context preservation\n\n### Intelligent Triage Modes\n- **Direct Mode**: Small documents (\u003c2000 tokens) processed via Agno agent for ultra-low latency\n- **RAG Pipeline**: Large documents with hybrid retrieval and reranking\n- **Vision Mode**: Direct image analysis with multimodal LLMs\n- **Raw Text Mode**: Web pages and text content processing\n\n### Advanced Retrieval System\n- **Hybrid Search**: BM25 (keyword) + FAISS (semantic vector) search\n- **Parallel Query Decomposition**: Complex questions broken into sub-queries\n- **Reciprocal Rank Fusion (RRF)**: Intelligent result fusion\n- **GPU-Accelerated Reranking**: CrossEncoder model for relevance scoring\n- **Domain Query Expansion**: Context-aware query enhancement\n\n### Multi-Language Support\n- **Language Detection**: Automatic fallback for non-English content (\u003c2000 tokens)\n- **Batch Processing**: Optimized for multiple questions simultaneously\n\n##  Technical Stack\n\n### Core Technologies\n- **Backend**: FastAPI with async processing, asyncio for concurrency\n- **LLMs**: Google Gemini 2.5 Flash and 2.5 Flash Lite\n- **Search**: FAISS (vector similarity), BM25 (keyword matching)\n- **Embeddings**: SentenceTransformers Embedding Model (all-MiniLM-L12-v2)\n- **Reranking**: CrossEncoder Reranking Model (ms-marco-MiniLM-L-12-v2)\n\n### Document Processing\n- **PDF**: PyMuPDF (fitz)\n- **Office**: python-docx, python-pptx, pandas(excel)\n- **OCR**: Tesseract via pytesseract\n- **Download**: aria2c for faster downloads with aiohttp fallback\n\n### Optimization Features\n- **GPU Acceleration**: CUDA support for embeddings and FAISS\n- **Pre-Emptive Query Generation**: Concurrent pre emptive query expansion for maximum speed\n- **Batch Processing**: Concurrent operations with semaphores\n- **Caching**: Document and embedding caches\n- **Memory Management**: Streaming processing for large files\n\n\n\n## Project Structure\n\n```\napi/\n├── core/\n│   ├── agent_logic.py             # Main orchestration logic\n│   ├── agno_agent.py              # Direct processing for small docs\n│   ├── document_processor.py      # Document parsing and chunking\n│   ├── embedding_manager.py       # GPU-optimized embeddings\n│   ├── vector_store.py            # Hybrid search implementation\n│   ├── query_expander.py          # Query enhancement and expansion\n│   └── citation_utils.py          # Citation management\n├── routes/\n│   └── ragsys.py                  # API endpoints for RAG operations\n├── main.py                        # FastAPI application\n├── state.py                       # Global state management\n└── settings.py                    # Configuration\nfrontend/\n├── app/\n│   └── page.tsx                   # Document library interface\n├── components/\n│   ├── chat-interface.tsx         # Q\u0026A chat interface\n│   ├── document-library.tsx       # Document management UI\n│   └── document-viewer.tsx        # Document preview with citations\n└── lib/\n    └── api.ts                     # API client\n```\n\n\n\n## Configuration\n\n### Performance Tuning\n```python\n# GPU Optimization\nBATCH_SIZE = 64  # For RTX 4060+\nUSE_FP16 = True  # Half precision for speed\n\n# Retrieval Parameters\nMAX_CHUNKS = 12  # High-K mode\nRERANK_CANDIDATES = 25\nSIMILARITY_THRESHOLD = 0.3\n\n# Concurrency Limits\nQUERY_STRATEGY_SEMAPHORE = 20\nANSWER_SEMAPHORE = 20\nSEARCH_SEMAPHORE = 40\n```\n\n## Performance Metrics\n\n### Processing Speed\n- **Small docs (\u003c2K tokens)**: ~1-2 seconds\n- **Medium docs (2K-50K tokens)**: ~5-15 seconds  \n- **Large docs (50K+ tokens)**: ~10-20 seconds\n\n### Accuracy Features\n- **Source Attribution**: Page numbers, clauses, sections and text snippets\n- **Confidence Scoring**: Relevance-based ranking\n- **Hallucination Prevention**: Evidence-only responses\n\n\n## Error Handling\n\n### Robust Fallbacks\n- **Download failures**: Retry with different methods\n- **LLM timeouts**: Automatic fallback to alternative models\n- **Parsing errors**: Graceful degradation with partial results\n- **GPU unavailable**: CPU fallback for all operations\n\n### Input Validation\n- File type verification\n- Token limit checking\n- URL format validation\n- Authentication verification\n\n## Deployment\n### Environment Configuration\nCreate a `.env` file based on `.env.sample`:\n```env\nGOOGLE_API_KEY=your_google_gemini_api_key\n```\n\n### Docker (Recommended)\n\nEnsure have cloned the MAIN branch\n\n**GPU Version (Recommended for best performance):**\n```dockerfile\ndocker compose up --build -d\n```\n\n**CPU-Only Version (No GPU required):**\n```dockerfile\ndocker compose -f docker-compose-cpu.yml up --build -d\n```\n\nBoth versions will start:\n- **Backend API**: Available at http://localhost:8000\n- **Frontend UI**: Available at http://localhost:3000\n\nThe frontend automatically connects to the backend API for document processing and question-answering.\n\n**Key Differences:**\n- **GPU Version**: Uses local SentenceTransformers for embeddings + GPU-accelerated reranking\n- **CPU Version**: Uses Gemini API for embeddings + CPU-based reranking (requires GOOGLE_API_KEY)\n\n### Production Considerations\n- **GPU Memory**: Monitor VRAM usage for concurrent requests\n\n### Deployment Options\n\n#### GPU Version (Default)\n- **Best Performance**: Local SentenceTransformers embeddings with GPU acceleration\n- **Requirements**: NVIDIA GPU with CUDA support, sufficient VRAM\n- **Use Case**: High-throughput production environments\n- **Cost**: Higher hardware requirements, lower API costs\n\n#### CPU-Only Version\n- **Universal Compatibility**: Runs on any system without GPU requirements\n- **Requirements**: Only GOOGLE_API_KEY for Gemini embeddings\n- **Use Case**: Development, testing, or systems without GPU access\n- **Cost**: Lower hardware requirements, higher API costs for embeddings\n\n**Performance Comparison:**\n- **Embeddings**: GPU (faster, local) vs CPU (API-based, rate limited)\n- **Reranking**: GPU (batched, very fast) vs CPU (sequential, moderate speed)\n- **Overall**: GPU version ~2-3x faster for large document processing\n\n\n\n## How it Works\n### Architecture Overview\n\nThe system employs a **multi-tier architecture** optimized for latency based on document characteristics:\n\n```\n                    Document URL Input\n                           ↓\n                 ┌─────────────────────┐\n                 │   Smart Routing     │\n                 │   \u0026 Classification  │\n                 └─────────┬───────────┘\n                           ↓\n          ┌────────────────┼────────────────┐\n          ↓                ↓                ↓\n    [Raw Text/HTML]   [Image Files]   [Document Files]\n          ↓                ↓                ↓\n    Direct LLM Query  Vision Analysis  Intelligence Pipeline\n     (~1-2 seconds)   (~2-3 seconds)    (~5-20 seconds)\n```\n\n## 📋 Input Classification \u0026 Smart Routing\n\n**URL Analysis**: System examines file extensions to route appropriately - no extension/HTML goes to direct processing, image extensions (.png, .jpg, .gif) trigger vision models, document formats (.pdf, .docx, .pptx) enter full RAG pipeline.\n\n**Language Detection**: Samples first 1000 characters to detect language. If document or questions are non-English, bypasses RAG and uses direct multilingual synthesis (for docs \u003c2000 tokens) since embeddings work best in consistent languages.\n\n## 🏗️ Knowledge Base Construction\n\n**Intelligent Chunking**: Document-type-aware semantic chunking. Word docs with few line breaks use sentence-based chunking (NLTK), others use paragraph-based with 4096 character limit. Intelligent overlap preserves context across boundaries.\n\n**GPU-Optimized Embeddings**: Uses all-MiniLM-L12-v2 model with batch processing (64 chunks), FP16 precision for 2x speedup. Processes in 256-chunk batches to avoid memory overflow.\n\n**Hybrid Indexing**: Builds FAISS vector index (L2 normalized, GPU-accelerated) and BM25 keyword index concurrently using asyncio.gather(). Provides both semantic similarity and exact term matching.\n\n## 🎯 Query Decomposition \u0026 Strategy\n\n**Intelligent Analysis**: Uses Gemini 2.5 Flash Lite to decompose complex questions into focused sub-queries. Example: \"I renewed yesterday, 6 years customer, can I claim Hydrocele?\" becomes separate queries about waiting periods and continuous coverage benefits.\n\n**Domain Expansion**: Detects hypotheticals, expands with relevant terminology, identifies acronyms/technical terms using NER and TF-IDF analysis. Creates bidirectional mappings for comprehensive search.\n\n**Concurrent Processing**: All query strategies generated in parallel with 6-second timeout protection and JSON validation fallbacks.\n\n## 🔍 Pre-emptive Search \u0026 Retrieval\n\n**Batch Orchestration**: Flattens all sub-queries from all questions into single parallel execution. Simultaneous BM25 and FAISS searches with 40%/60% weighted fusion after score normalization.\n\n**Reciprocal Rank Fusion**: Combines multiple sub-query results using rank-based scoring (1/(k+rank) where k=60). Chunks appearing highly in multiple searches score highest, avoiding incomparable score fusion issues.\n\n**Batched GPU Reranking**: Critical optimization - all (query, chunk) pairs from all questions processed in single CrossEncoder inference call (ms-marco-MiniLM-L-12-v2). Provides ~10x speedup over individual reranking.\n\n## ⚡ Response Generation\n\n**Evidence-Only Synthesis**: Explicit prompt constraints prevent hallucination, ignore embedded instructions (prompt injection protection), enforce plain text format. All synthesis happens concurrently with timeout/fallback protection.\n\n## Key Performance Innovations\n\n1. **Concurrent Processing**: Document processing, query analysis, search execution, and synthesis all parallelized\n2. **Smart Routing**: Content-aware processing paths avoid unnecessary overhead\n3. **Batched Operations**: GPU embedding generation and reranking batched across all questions\n4. **Adaptive Strategies**: Dynamic model/context selection based on request characteristics\n5. **Timeout Protection**: 6-second hard caps prevent API stalls, graceful fallbacks ensure responses\n\n##  Installation \n\n(If not using Docker Compose, follow these steps)\n\n### Prerequisites\n- Python 3.10+\n- CUDA-capable GPU (optional, for acceleration)\n- Torch with GPU support\n- aria2c in path (optional, for faster downloads)\n\n### Setup \n```bash\npip install -r requirements.txt\n\n# Download NLTK data\npython -c \"import nltk; nltk.download('punkt'); nltk.download('stopwords'); nltk.download('averaged_perceptron_tagger')\"\n```\n\n### Environment Configuration\nCreate a `.env` based on the .env.sample file:\n```env\nGOOGLE_API_KEY=your_google_gemini_api_key\n\n```\n### Optional : Lint and Format\n\nFeel free to run the ruff scripts in scripts/ to lint and format the code if you want to keep things clean and consistent. We've set up some basic ruff based linting and formatting scripts to catch common issues and standardize formatting.\n\n##  Usage\n\n### Start with Docker (Recommended)\n\n**GPU Version:**\n```bash\n# Start both frontend and backend services with GPU acceleration\ndocker compose up --build -d\n```\n\n**CPU-Only Version:**\n```bash\n# Start both frontend and backend services (CPU-only, requires GOOGLE_API_KEY)\ndocker compose -f docker-compose-cpu.yml up --build -d\n```\n\n**Access the application:**\n- Frontend: http://localhost:3000\n- Backend API: http://localhost:8000\n- API Docs: http://localhost:8000/docs\n\n### Start Manually (Development)\n\nIf not using Docker, run both services separately:\n\n**Backend (GPU Version):**\n```bash\n# From project root\nuvicorn api.main:app --host 0.0.0.0 --port 8000 --reload\n```\n\n**Backend (CPU-Only Version):**\n```bash\n# From project root - requires GOOGLE_API_KEY in .env\nuvicorn api.main_cpu:app --host 0.0.0.0 --port 8000 --reload\n```\n\n**Frontend:**\n```bash\n# From frontend directory\ncd frontend\nnpm install\nnpm run dev\n```\n\n## Use Cases\n\n### Legal Documents\n- Constitutional articles analysis\n- Contract clause extraction\n- Legal precedent search\n- Policy interpretation and compliance\n\n### Insurance Policies\n- Coverage details and exclusions\n- Claim procedures and waiting periods\n- Premium calculations\n\n### Corporate Documents\n- Policy interpretation\n- Compliance requirements\n- Procedure documentation\n\n### Research Papers\n- Key findings extraction\n- Methodology analysis\n- Citation tracking\n\n### General Documents\n- Technical documentation search\n- Standard operating procedures\n- Training materials and guides\n- Meeting notes and reports\n\n\n## Future Roadmap\n\nThis roadmap outlines potential directions for evolving the system from a powerful query engine into a comprehensive document intelligence platform.\n\n### Core Pipeline \u0026 Performance Enhancements\n-   **Graph RAG (Knowledge Graph Retrieval)**: Extract entities and relationships from documents to build a knowledge graph. This would enable answering complex, multi-hop questions like \"Which signatories approved contracts with clauses that were later disputed?\"\n-   **Advanced Table \u0026 Chart Understanding**: Implement a dedicated pipeline to parse tables and charts into structured data (e.g., pandas DataFrames). Allow natural language queries directly against this structured data for precise numerical and relational answers.\n-   **Hierarchical \u0026 Recursive Chunking**: For very long, structured documents (like books or legal codes), implement a strategy that chunks chapters, sections, and paragraphs hierarchically. This allows the system to summarize context at different levels of granularity.\n-   **Adaptive Retrieval Strategy**: Develop a meta-agent that learns to select the best retrieval strategy (e.g., BM25-dominant, FAISS-dominant, or specific fusion weights) based on the type of query, improving efficiency and relevance.\n\n### User Experience \u0026 Interface\n-   **Interactive Document Viewer**: A web UI that displays the source document alongside the chat interface. When an answer is provided, the source chunks should be automatically highlighted in the document viewer for seamless verification.\n-   **User Feedback Loop (RLHF)**: Add thumbs-up/thumbs-down buttons to answers. This feedback would be collected to create a dataset for fine-tuning models using Reinforcement Learning from Human Feedback, continuously improving accuracy.\n-   **Automated Query Suggestions**: Upon document ingestion, analyze the content and proactively suggest relevant, insightful questions to the user, guiding them toward the document's key information.\n-   **Answer Curation \u0026 Management**: Allow expert users or administrators to review, edit, and save \"golden\" answers to common questions, creating a trusted knowledge base that complements the AI-generated responses.\n\n### Enterprise \u0026 Production Features\n-   **Automated Document Ingestion**: Create data connectors to automatically sync and index documents from sources like **SharePoint, Google Drive, Confluence, and S3 buckets**, keeping the knowledge base up-to-date without manual uploads.\n-   **Granular Access Control (ACLs)**: Implement a robust permission system where access can be controlled per document, per collection, or per user group, ensuring data security and confidentiality in a multi-tenant environment.\n-   **Comprehensive Analytics Dashboard**: Move beyond logs to a visual dashboard showing query trends, most-queried documents, unanswered questions, latency metrics, and cost-per-query breakdowns for operational insights.\n-   **Data Residency \u0026 Compliance Controls**: For regulations like GDPR, add features to control the geographical location of data processing and storage, ensuring compliance with international data laws.\n\n### Advanced AI Capabilities\n-   **Agentic Workflows \u0026 Task Execution**: Evolve from a Q\u0026A system to a task-execution engine. Allow multi-step prompts like, \"Summarize the key risks in this contract, compare them against our standard compliance checklist, and draft an email to the legal team highlighting any deviations.\"\n-   **Proactive Insights \u0026 Anomaly Detection**: Create a monitoring agent that periodically scans new documents and proactively alerts users to significant changes, risks, or opportunities—for example, \"A new termination clause was added to the employee handbook that differs from the previous version.\"\n-   **Multi-Document Comparative Analysis**: Enable queries that span multiple documents, such as \"Compare the liability clauses in Contract A and Contract B and highlight the key differences.\"\n-   **Voice-to-Query \u0026 Spoken Answers**: Integrate Speech-to-Text (STT) and Text-to-Speech (TTS) services to allow users to ask questions verbally and receive spoken responses, enabling hands-free interaction.\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details on:\n\n- How to report bugs\n- How to suggest features\n- Development setup and workflow\n- Code standards and best practices\n- Pull request process\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🔒 Security\n\nFor security concerns, please review our [Security Policy](SECURITY.md) and report vulnerabilities responsibly.\n\n## 🙏 Acknowledgments\n\n- Built with [FastAPI](https://fastapi.tiangolo.com/), [Next.js](https://nextjs.org/), and [Google Gemini](https://deepmind.google/technologies/gemini/)\n- Powered by [SentenceTransformers](https://www.sbert.net/) and [FAISS](https://github.com/facebookresearch/faiss)\n- Inspired by the open-source AI community\n\n## 📬 Support\n\n- **Issues**: [GitHub Issues](https://github.com/cerno-ai/cerno-insight/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/cerno-ai/cerno-insight/discussions)\n- **Documentation**: [Explanation.md](./Explanation.md) | [Installation Guide](./INSTALLATION.md)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**⭐ Star this repository if you find it helpful!**\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcerno-ai%2Fcerno-insight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcerno-ai%2Fcerno-insight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcerno-ai%2Fcerno-insight/lists"}