Skip to main content

Provider-agnostic voice RAG pipeline. Plug in your voice provider, LLM, vector store, and document parsers.

Project description

voice-rag

PyPI version License: MIT Python

voice-rag is a Python package for voice-oriented RAG pipelines: ingest local documents, store them in Qdrant, serve an OpenAI-style chat-completions webhook, and swap voice or LLM providers behind a stable interface.

What it includes

  • Python SDK via KnowledgeAgent
  • CLI for init, ingest, serve, query, inspect, and doctor
  • Built-in voice adapters for elevenlabs and deepgram
  • Built-in LLM clients for openai, anthropic, and gemini
  • Built-in parsers for .txt, .md, .pdf, and .docx
  • Qdrant vector store integration with hybrid dense + BM25 retrieval

Quickstart

pip install "voice-rag[elevenlabs]"
export OPENAI_API_KEY=your_api_key_here
voice-rag init

Edit voice-rag.yaml, then ingest and serve:

voice-rag ingest ./data/sample_docs/claude-code-changelog.md --recreate
voice-rag serve

Point your voice platform to http://localhost:8000/v1 if it expects an OpenAI-style Custom LLM endpoint. By default, voice-rag uses an embedded local Qdrant store in .qdrant, so you do not need to start a separate Qdrant server unless you set vector_store.url.

CLI

voice-rag init [--dir PATH]
voice-rag ingest <path> [--recreate] [--config PATH]
voice-rag serve [--host HOST] [--port PORT] [--reload] [--config PATH]
voice-rag query <text> [--limit N] [--config PATH]
voice-rag inspect [--config PATH]
voice-rag doctor

Python API

from voice_rag import KnowledgeAgent, VoiceRagConfig

config = VoiceRagConfig()
agent = KnowledgeAgent(config=config)
agent.ingest("./docs", recreate=True)
app = agent.create_app()

Configuration

voice-rag reads configuration from voice-rag.yaml and environment variables. It does not auto-load .env files.

Key Env Default
llm.api_key / embedding.api_key OPENAI_API_KEY (required for OpenAI)
llm.provider LLM_PROVIDER openai
llm.model LLM_MODEL gpt-4o-mini
embedding.model EMBEDDING_MODEL text-embedding-3-small
vector_store.url VECTOR_STORE_URL empty; use local .qdrant
vector_store.collection_name VECTOR_STORE_COLLECTION_NAME knowledge_base
vector_store.local_path VECTOR_STORE_LOCAL_PATH .qdrant
server.port SERVER_PORT 8000

See voice-rag.yaml for the full schema.

Development

pip install -e ".[all,dev]"
pytest tests/ -v

Use CONTRIBUTING.md for connector and packaging guidelines.

Publishing to PyPI

With PYPI_TOKEN and the release environment configured in the repo, push a version tag to trigger the GitHub Actions workflow:

git tag v0.1.0
git push origin v0.1.0

The workflow runs smoke test → build → publish to PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

voice_rag-0.1.0.tar.gz (96.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

voice_rag-0.1.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file voice_rag-0.1.0.tar.gz.

File metadata

  • Download URL: voice_rag-0.1.0.tar.gz
  • Upload date:
  • Size: 96.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for voice_rag-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e60400a45da76b6a013d44ef78e917fd68a885d4b99b98bacdeccd3a568b9102
MD5 9f406182a09eed1fc2ad1c3eff353989
BLAKE2b-256 cb49e00f064d4589efd5e8d84888e633a1ef5ad84a39d16019b7dc742eed5183

See more details on using hashes here.

Provenance

The following attestation bundles were made for voice_rag-0.1.0.tar.gz:

Publisher: publish.yml on kytona/voice-rag

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file voice_rag-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: voice_rag-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for voice_rag-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 41d94347787428d785e4741ec2abc5ac63685cbb2ca9bcc0f9c5a31ac2a6bd0b
MD5 f51b10a57f3a8c11dcffbe10335da674
BLAKE2b-256 581940fac43ede5f2005ae352774aa386e5bd18da145391040f275fb2ef22d12

See more details on using hashes here.

Provenance

The following attestation bundles were made for voice_rag-0.1.0-py3-none-any.whl:

Publisher: publish.yml on kytona/voice-rag

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page