just-semantic-search
LLM-agnostic semantic-search library with hybrid search support and multiple backends.
Features
- 🔍 Hybrid search combining semantic and keyword search
- 🚀 Multiple backend support (Meilisearch, more coming soon)
- 📄 Smart document splitting with semantic awareness
- 🔌 LLM-agnostic - works with any embedding model
- 🎯 Optimized for scientific and technical content
- 🛠 Easy to use API and CLI tools
Installation
Make sure you have at least Python 3.11 installed.
Using pip
pip install just-semantic-search # Core package
pip install just-semantic-search-meili # Meilisearch backend
Using Poetry
poetry add just-semantic-search # Core package
poetry add just-semantic-search-meili # Meilisearch backend
From Source
# Install Poetry if you haven't already
curl -sSL https://install.python-poetry.org | python3 -
# Clone the repository
git clone https://github.com/your-username/just-semantic-search.git
cd just-semantic-search
# Install dependencies and create virtual environment
poetry install
# Activate the virtual environment
poetry shell
Docker Setup for Meilisearch
The project includes a Docker Compose configuration for running Meilisearch. Simply run:
./bin/meili.sh
This will start a Meilisearch instance with vector search enabled and persistent data storage.
Quick Start
Document Splitting
from just_semantic_search.article_semantic_splitter import ArticleSemanticSplitter
from sentence_transformers import SentenceTransformer
# Initialize model and splitter
model = SentenceTransformer('thenlper/gte-base')
splitter = ArticleSemanticSplitter(model)
# Split document with metadata
documents = splitter.split_file(
"path/to/document.txt",
embed=True,
title="Document Title",
source="https://source.url"
)
Hybrid Search with Meilisearch
from just_semantic_search.meili.rag import MeiliConfig, MeiliRAG
# Configure Meilisearch
config = MeiliConfig(
host="127.0.0.1",
port=7700,
api_key="your_api_key"
)
# Initialize RAG
rag = MeiliRAG(
"test_index",
"thenlper/gte-base",
config,
create_index_if_not_exists=True
)
# Add documents and search
rag.add_documents_sync(documents)
results = rag.search(
text_query="What are CAD-genes?",
vector=model.encode("What are CAD-genes?")
)
Project Structure
The project consists of multiple components:
core: Core interfaces for hybrid search implementationsmeili: Meilisearch backend implementation
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
License
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
Citation
If you use this software in your research, please cite:
@software{just_semantic_search,
title = {just-semantic-search: LLM-agnostic semantic search library},
author = {Karmazin, Alex and Kulaga, Anton},
year = {2024},
url = {https://github.com/your-username/just-semantic-search}
}
Metadata
Release files for just-semantic-search-cuda 2.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| just_semantic_search_cuda-2.5.0.tar.gz | 18.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| just_semantic_search_cuda-2.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.3 kB
Release files / just_semantic_search_cuda-2.5.0.tar.gz
| Download URL | just_semantic_search_cuda-2.5.0.tar.gz |
|---|---|
| Size | 18.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
832c17ef3f7f7eb7e73e91e5b59bf113ebeae9c1d0bc3cc2a9c88b81eb221900
|
|
BLAKE2b-256 checksum How to use checksums |
9b7ad0695720e86ffdf00a168ebdfb96d837f40a8210d1519e7340ec4ff7c547
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.0.1 CPython/3.10.12 Linux/5.15.0-133-generic
|
Release files / just_semantic_search_cuda-2.5.0-py3-none-any.whl
| Download URL | just_semantic_search_cuda-2.5.0-py3-none-any.whl |
|---|---|
| Size | 21.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c357b24a9f9507080a1da0e8aa0f7f3c840d4b60ce2c68b76c3ccdb724c8db8d
|
|
BLAKE2b-256 checksum How to use checksums |
620fc087049bd46a31d144514ca892a7eda73458b30dc6c9db2f0c2c1d983590
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.0.1 CPython/3.10.12 Linux/5.15.0-133-generic
|
Security for just-semantic-search-cuda 2.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.