Skip to main content

🚀 FindaLedge: Simple Ensemble Search for RAG 🔍

FindaLedge is a Python library for building robust, hybrid search backends for Retrieval-Augmented Generation (RAG) and LLM applications. It unifies vector and keyword search, manages document ingestion, and provides a simple, powerful API.

Build powerful RAG search backends with ease!

Python Version License: MIT PyPI version


🇯🇵 日本語版 README はこちら (Click here for Japanese README)


🤔 Why FindaLedge?

  • Vector search (semantic) and keyword search (BM25) each have strengths and weaknesses.
  • FindaLedge combines both (ensemble search) for best accuracy, with zero setup hassle.
  • Handles all the plumbing: document loading, chunking, embedding, index sync, result fusion (RRF), and more!

✨ Features

Feature Description
🎯 Hybrid Search Combines vector & keyword search (BM25) with RRF fusion
🔌 Flexible Supports Chroma, FAISS, BM25s, OpenAI, Ollama, HuggingFace, etc.
📚 Easy Ingestion Add files, directories, or LangChain Documents instantly
🔄 Auto Indexing Indices are auto-created, updated, and persisted
🧹 Simple API Add, search, remove documents with one-liners
🧩 LangChain Ready Use as a Retriever in LangChain chains
🧪 Full Test Suite 100+ tests, pytest/uv compatible

⚙️ Supported Environment

Item Supported
Python 3.11+ (Windows/Powershell推奨)
OS Windows, macOS, Linux
Vector DB Chroma, FAISS (optional)
Embeddings OpenAI, Ollama, HuggingFace, etc.
Agents SDK OpenAI Agents SDK
Test pytest, pytest-cov, uv

🛠️ Quick Start

1. Install (with uv & venv recommended)

# Create and activate venv
python -m venv .venv
.venv\Scripts\Activate.ps1  # (Windows Powershell)

# Install uv (if not yet)
pip install uv

# Install dependencies
uv pip install -r requirements.txt
# or: uv pip install .

2. Set Environment Variables (optional)

$env:OPENAI_API_KEY="sk-..."  # For OpenAI
$env:FINDALEDGE_EMBEDDING_MODEL_NAME="text-embedding-3-small"
$env:FINDALEDGE_PERSIST_DIR="./my_data"

3. Basic Usage

from findaledge import FindaLedge

ledge = FindaLedge()
ledge.add_document("docs/manual.txt")
results = ledge.search("What is the main topic?")
for r in results:
    print(r.document.page_content, r.score)

4. Run Tests

.venv\Scripts\Activate.ps1
uv pip install -r requirements.txt
pytest

🏗️ Architecture (Layered)

Layer Class Responsibility
Controller FindaLedge Unified API, orchestrates all below
UseCase Finder Hybrid search, RRF fusion
Gateway ChromaDocumentStore, BM25sStore Vector/BM25 storage
Function DocumentLoader, DocumentSplitter, EmbeddingModelFactory Loading, splitting, embedding
Data LangchainDocument, SearchResult Data objects
Utility Tokenizer, config/env Tokenize, config
@startuml
FindaLedge --> Finder
FindaLedge --> DocumentLoader
FindaLedge --> DocumentSplitter
FindaLedge --> EmbeddingModelFactory
FindaLedge --> ChromaDocumentStore
FindaLedge --> BM25sStore
Finder --> SearchResult
@enduml

🧑‍💻 Main API (Class Table)

Class Role Key Methods
FindaLedge Facade/Controller add_document, search, remove_document, get_context
Finder UseCase (Hybrid) search (RRF), find
ChromaDocumentStore Gateway add_documents, as_retriever
BM25sStore Gateway add_documents, as_retriever
EmbeddingModelFactory Factory create_embeddings
DocumentLoader Loader load_file, load_from_directory
DocumentSplitter Splitter split_documents

📖 Documentation

🧪 Testing

  • All tests pass (pytest/uv, Windows Powershell)
  • Run: pytest
  • Coverage: pytest-cov enabled

🤝 Contributing

Contributions welcome! Fork, branch, PR, and let's build better RAG search together 🚀

📜 License

MIT License. See LICENSE.

Release files for findaledge 0.1.1

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

Source distribution (sdist)

Source distribution for findaledge 0.1.1
File Size Uploaded
findaledge-0.1.1.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for findaledge 0.1.1
File Interpreter ABI Platform
findaledge-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 9.3 kB

Release files / findaledge-0.1.1.tar.gz

Download URL findaledge-0.1.1.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
79ed8101f1450269e983a30481d33b1761e88f590bf4cff442ab89f5e1279ae3
BLAKE2b-256 checksum
How to use checksums
e092d54e8a0fa9856ae0eabaa51a5fccfe60c30f753c0a7df5c4a18a7bd13590
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.5

Release files / findaledge-0.1.1-py3-none-any.whl

Download URL findaledge-0.1.1-py3-none-any.whl
Size 4.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e81b25c9fc8fd9009dd6242d7f5fd3088e86d8e4fb77cea4098e0a91e30d947
BLAKE2b-256 checksum
How to use checksums
c1f99e0132651f5428aa30f2cd184fee4b9f589319c64f67a5f38d3127873194
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.5

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

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