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!X118across 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 indexfinancials.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:
BedrockAgentis still available as a backward-compatible alias forVectorlessAgent.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b51c446c2f8fa78b3958c80f045fe36ee1fdc3771eb715e30d1c54816a9a5a7b
|
|
| MD5 |
87390cc7ec5dc1e79c67302a15e40c80
|
|
| BLAKE2b-256 |
850e54a16f71c13052085a0f2049ecabe4641074a72936691548fc7e1a54ae7b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dbc78ab736af7b6719f8d8a91e59ea31c4cdc0c3e2948efdbcd668f13c197c8
|
|
| MD5 |
0d9950cb20c0fe2d567e40326bb7dbaf
|
|
| BLAKE2b-256 |
67db83d0f9523bb06fb6d4a00e8ab64840bed5b010136bac8e508b1983c15102
|