Skip to main content

fennec-community

Production-grade RAG framework with Arabic NLP support

fennec-community is a modular Python library for building Retrieval-Augmented Generation (RAG) pipelines. It ships with first-class support for Arabic text and integrates with all major LLM providers, embedding models, and vector databases.


Features

  • Smart Chunking — Semantic, adaptive, structure-aware, context-aware, and Arabic-specific chunkers
  • Embeddings — OpenAI, Gemini, Mistral, Ollama, HuggingFace, and a dedicated Arabic embedder
  • LLM Interfaces — Unified API over OpenAI, Anthropic, Gemini, Mistral, Groq, and Ollama
  • Vector Databases — FAISS, ChromaDB, and Pinecone
  • RAG Variants — Standard, Agentic, Conversational, Graph, Hybrid, Multi-Doc, Multi-Hop, Streaming, Domain-Specific, Self-Improving
  • Prompt Engine — Dynamic context-aware prompt building with strategy support
  • Router — Hierarchical semantic routing with caching, feedback, and observability
  • Plugin System — Extensible plugin architecture with security controls
  • Output Parsers — JSON, YAML, CSV, Pydantic, structured output with auto-fix and retry
  • Document Loaders — PDF, DOCX, HTML, CSV, JSON, plain text, web, and directory loaders

Installation

pip install fennec-community

Install with optional extras for your provider of choice:

pip install fennec-community[openai]       # OpenAI LLM + embeddings
pip install fennec-community[anthropic]    # Anthropic Claude
pip install fennec-community[gemini]       # Google Gemini
pip install fennec-community[ollama]       # Local Ollama models
pip install fennec-community[faiss]        # FAISS vector store
pip install fennec-community[chroma]       # ChromaDB vector store
pip install fennec-community[pinecone]     # Pinecone vector store
pip install fennec-community[arabic]       # Arabic NLP tools
pip install fennec-community[all]          # Everything

Quick Start

Basic RAG Pipeline

from fennec_community.rag.core import RAGSystem, RAGConfig
from fennec_community.embeddings import OpenAIEmbedder
from fennec_community.vector_database import FAISSVectorDatabase

config = RAGConfig(top_k=5)
embedder = OpenAIEmbedder(api_key="sk-...")
db = FAISSVectorDatabase(embedder=embedder)

rag = RAGSystem(config=config, vector_db=db)
rag.load_documents(["path/to/docs/"])

answer = rag.query("What is the capital of France?")
print(answer)

Arabic Chunking

from fennec_community.chunks import ArabicTextChunker, ChunkConfig

chunker = ArabicTextChunker(config=ChunkConfig(chunk_size=512))
chunks = chunker.chunk("النص العربي هنا...")

for chunk in chunks:
    print(chunk.text)

Conversational RAG

from fennec_community.rag.types.conversational_rag import ConversationalRAG

crag = ConversationalRAG(rag_system=rag)
response = crag.chat("Tell me about the report.")
response2 = crag.chat("Can you summarize the key points?")

Semantic Router

from fennec_community.router import HierarchicalRouter, Route, RouteGroup

router = HierarchicalRouter()
router.add_group(
    RouteGroup(
        name="support",
        routes=[
            Route(name="billing", keywords=["invoice", "payment", "refund"]),
            Route(name="technical", keywords=["error", "bug", "crash"]),
        ]
    )
)

result = router.route("I need help with my invoice")
print(result.matched_route)  # "billing"

LLM Interface

from fennec_community.llm import OpenAIInterface

llm = OpenAIInterface(api_key="sk-...")
response = llm.chat("Explain RAG in one sentence.")
print(response)

Output Parsing

from fennec_community.output_parser import OutputParser

parser = OutputParser()
result = parser.parse('{"name": "Alice", "age": 30}', format="json")
print(result)  # {'name': 'Alice', 'age': 30}

Modules

Module Description
fennec_community.chunks Text chunking strategies including Arabic support
fennec_community.embeddings Embedding models for multiple providers
fennec_community.llm LLM provider interfaces
fennec_community.vector_database Vector store backends (FAISS, Chroma, Pinecone)
fennec_community.rag Full RAG system with multiple retrieval strategies
fennec_community.prompt Prompt engineering and context management
fennec_community.router Semantic routing with hierarchical matching
fennec_community.context Context window management and retrieval
fennec_community.output_parser Structured output parsing and validation
fennec_community.document_loaders Document ingestion from various sources
fennec_community.plugins Plugin system for extending functionality
fennec_community.chain Sequential, parallel, and conditional chains

RAG Variants

Variant Class Use Case
Standard RAG RAGSystem General question answering
Agentic RAG AgenticRAG Multi-step reasoning with tool use
Conversational RAG ConversationalRAG Multi-turn chat with memory
Graph RAG GraphRAG Knowledge graph-based retrieval
Hybrid Search RAG HybridSearchRAG Dense + sparse retrieval
Multi-Doc RAG MultiDocRAG Cross-document reasoning
Multi-Hop RAG MultiHopRAG Complex multi-step queries
Streaming RAG StreamingRAG Token-by-token streaming responses
Domain RAG DomainSpecificRAG Domain-constrained retrieval
Self-Improving RAG SelfImprovingRAG Iterative refinement with HyDE
Federated RAG FederatedRAG Multi-source distributed retrieval

Requirements

  • Python >= 3.9
  • pydantic >= 2.0
  • numpy >= 1.24
  • tiktoken >= 0.5

All other dependencies are optional and installed via extras.


License

MIT License — see LICENSE for details.


Contributing

Contributions are welcome! Please open an issue or pull request on GitHub.

Release files for fennec-community 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fennec-community 0.1.0
File Size Uploaded
fennec_community-0.1.0.tar.gz 439.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fennec-community 0.1.0
File Interpreter ABI Platform
fennec_community-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 979.5 kB

Release files / fennec_community-0.1.0.tar.gz

Download URL fennec_community-0.1.0.tar.gz
Size 439.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c63b73115cd323092eda44ec6a008efffe2ff592be6afdda95e5fb30bbaf4732
BLAKE2b-256 checksum
How to use checksums
fb37556c3f36e73384b72342bd212a22fbf27be75a54893c950c41c4ebd75e74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.0

Release files / fennec_community-0.1.0-py3-none-any.whl

Download URL fennec_community-0.1.0-py3-none-any.whl
Size 540.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ccf73e3e825262f0f151e0b07f652765e08aa544c807304cf4f9b06c054fb0ed
BLAKE2b-256 checksum
How to use checksums
25fa996819b95f9000c6d6367a10eac056f1a4ecb48f4d87b47caa8c03495a8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.0

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page