Skip to main content

Reasoning-based RAG for Excel financial models — no vectors, no chunking. Supports all major LLM providers.

Project description

Vectorless-QV

Reasoning-based RAG for Excel financial models — no vectors, no chunking.

Inspired by the PageIndex architecture, Vectorless builds a hierarchical tree index of an Excel workbook and uses an LLM reasoning loop to navigate it — just like a financial analyst would.

Supports all major LLM providers: AWS Bedrock, OpenAI, Anthropic, Google Gemini, Azure OpenAI, Ollama (local), Groq, and Together AI.

Features

  • No vector database — no embeddings, no similarity search
  • No chunking — formulas and cell relationships stay intact
  • Hierarchical tree index — sheets → tables → formulas → cells
  • LLM-driven reasoning — parallel tool calls, search, drill-down
  • Formula tracing — follows =+PL!X118 across sheets
  • What-if analysis — override cells and recalculate formulas
  • 100% traceable — every answer cites exact sheet, cell, and formula
  • Multi-provider LLM support — swap providers with a single flag

Installation

pip install vectorless-qv

Install with the LLM provider(s) you need:

pip install vectorless-qv[bedrock]     # AWS Bedrock (Claude, Titan, Llama, Mistral)
pip install vectorless-qv[openai]      # OpenAI (GPT-4o, o1, o3)
pip install vectorless-qv[anthropic]   # Anthropic direct API (Claude)
pip install vectorless-qv[google]      # Google Gemini
pip install vectorless-qv[azure]       # Azure OpenAI
pip install vectorless-qv[ollama]      # Ollama local models
pip install vectorless-qv[groq]        # Groq Cloud
pip install vectorless-qv[together]    # Together AI
pip install vectorless-qv[all]         # All providers

Quick Start

1. Index a workbook

vectorless-qv index --file financials.xlsx

This creates two files:

  • financials.tree.json — the hierarchical tree index
  • financials.parsed.json — raw cell data for query-time lookups

2. Ask questions

# Single question (default: AWS Bedrock)
vectorless-qv query --file financials.xlsx -q "What is the gross margin?"

# Use a different provider
vectorless-qv query --file financials.xlsx --provider openai -q "What is the gross margin?"

# Use a specific model
vectorless-qv query --file financials.xlsx --provider anthropic --model claude-opus-4-20250514 -q "..."

# Local model via Ollama
vectorless-qv query --file financials.xlsx --provider ollama --model llama3.1 -q "..."

# Interactive mode
vectorless-qv query --file financials.xlsx --provider openai

# With reasoning trace
vectorless-qv query --file financials.xlsx -q "How is EBITDA calculated?" -v

3. Discover providers and models

# List all providers
vectorless-qv list-providers

# Show models for a specific provider
vectorless-qv list-providers --provider openai

4. Inspect the tree

# Full overview
vectorless-qv inspect --file financials.xlsx

# Specific node
vectorless-qv inspect --file financials.xlsx --node s1_t0

Python API

from vectorless_qv import parse_workbook, build_tree, VectorlessAgent

# Parse and index
data = parse_workbook("financials.xlsx")
tree = build_tree(data)

# Query with any provider
agent = VectorlessAgent(tree=tree, workbook_data=data, excel_path="financials.xlsx",
                        provider="openai", model_id="gpt-4o")
result = agent.query("What drives net income?")
print(result["answer"])
print(result["citations"])

# Switch to local Ollama
agent = VectorlessAgent(tree=tree, workbook_data=data, excel_path="financials.xlsx",
                        provider="ollama", model_id="llama3.1")

# Or use Bedrock (default)
agent = VectorlessAgent(tree=tree, workbook_data=data, excel_path="financials.xlsx")

# List available providers programmatically
from vectorless_qv import list_providers
for p in list_providers():
    print(f"{p['name']}: {p['default_model']} ({len(p['models'])} models)")

Note: BedrockAgent is still available as a backward-compatible alias for VectorlessAgent.

Supported Providers

Provider Install Default Model Env Variable
bedrock pip install vectorless-qv[bedrock] global.anthropic.claude-sonnet-4-6 AWS_DEFAULT_REGION, AWS_ACCESS_KEY_ID
openai pip install vectorless-qv[openai] gpt-4o OPENAI_API_KEY
anthropic pip install vectorless-qv[anthropic] claude-sonnet-4-20250514 ANTHROPIC_API_KEY
google pip install vectorless-qv[google] gemini-2.0-flash GOOGLE_API_KEY
azure pip install vectorless-qv[azure] gpt-4o AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT
ollama pip install vectorless-qv[ollama] llama3.1 OLLAMA_BASE_URL (default: localhost:11434)
groq pip install vectorless-qv[groq] llama-3.3-70b-versatile GROQ_API_KEY
together pip install vectorless-qv[together] Llama-3.3-70B-Instruct-Turbo TOGETHER_API_KEY

Architecture

Excel File
    │
    ▼
┌──────────┐     ┌──────────┐     ┌──────────┐
│  Parser  │────▶│ Indexer   │────▶│ Tree JSON│
│(openpyxl)│     │(hierarchy)│     │  (ToC)   │
└──────────┘     └──────────┘     └──────────┘
                                       │
                                       ▼
                               ┌───────────────┐
                               │VectorlessAgent│◀── User Question
                               │ (any LLM)     │
                               └──────┬────────┘
                                      │
                    ┌─────────────────┼─────────────────┐
                    ▼                 ▼                 ▼
              drill_down         get_cells         search_rows
              get_row            what_if            answer
                                      │
                    ┌─────────────────┼─────────────────┐
                    ▼                 ▼                 ▼
                Bedrock           OpenAI            Ollama
                Anthropic         Google            Groq
                Azure             Together          ...

License

MIT

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

vectorless_qv-0.2.1.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

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

vectorless_qv-0.2.1-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file vectorless_qv-0.2.1.tar.gz.

File metadata

  • Download URL: vectorless_qv-0.2.1.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for vectorless_qv-0.2.1.tar.gz
Algorithm Hash digest
SHA256 b51c446c2f8fa78b3958c80f045fe36ee1fdc3771eb715e30d1c54816a9a5a7b
MD5 87390cc7ec5dc1e79c67302a15e40c80
BLAKE2b-256 850e54a16f71c13052085a0f2049ecabe4641074a72936691548fc7e1a54ae7b

See more details on using hashes here.

File details

Details for the file vectorless_qv-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: vectorless_qv-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for vectorless_qv-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3dbc78ab736af7b6719f8d8a91e59ea31c4cdc0c3e2948efdbcd668f13c197c8
MD5 0d9950cb20c0fe2d567e40326bb7dbaf
BLAKE2b-256 67db83d0f9523bb06fb6d4a00e8ab64840bed5b010136bac8e508b1983c15102

See more details on using hashes here.

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