Skip to content
Merged

Dev #75

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
b54692c
docs: add pull request template
zTgx Apr 16, 2026
d953224
docs(lib): update crate description to reflect LLM-guided approach
zTgx Apr 16, 2026
ecedd88
feat(rust): add rustfmt config and improve client builder
zTgx Apr 16, 2026
4b95661
refactor(rust): remove unused config field from EngineBuilder
zTgx Apr 16, 2026
8d5f976
refactor(rust): remove unused retrieval config from EngineBuilder
zTgx Apr 16, 2026
bca84f1
refactor(rust): remove unused imports and simplify builder configuration
zTgx Apr 16, 2026
29f3cec
feat(rust): add custom config option to EngineBuilder
zTgx Apr 16, 2026
4877e88
feat(python): add Python bindings for vectorless engine
zTgx Apr 16, 2026
1d9cfec
feat(client): add endpoint validation in engine builder
zTgx Apr 16, 2026
47a5e38
refactor(rust): clean up imports and formatting across multiple modules
zTgx Apr 16, 2026
89de8e8
feat(docs): update GitHub star component and redesign homepage
zTgx Apr 16, 2026
a7b04f5
feat(docs): replace feature grid with interactive demo card
zTgx Apr 16, 2026
ce5192a
docs(homepage): update how it works section with workflow diagram
zTgx Apr 16, 2026
3dced1b
feat(docs): add interactive use cases slider to homepage
zTgx Apr 16, 2026
20960b8
feat(docs): enhance CTA section with dark theme and installation cards
zTgx Apr 16, 2026
9d313ac
style(footer): adjust footer spacing and typography
zTgx Apr 16, 2026
1496eb8
fix(docs): update copyright symbol and footer styling
zTgx Apr 16, 2026
c281322
docs(README): update description and restructure content
zTgx Apr 16, 2026
851b80c
style(docs): update heading text color to use CSS variable
zTgx Apr 16, 2026
2bb7632
feat(engine): add endpoint parameter support for API configuration
zTgx Apr 16, 2026
3939faa
chore(release): bump version to 0.1.29 workspace and 0.1.8 python pac…
zTgx Apr 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Summary

<!-- Brief description of what this PR does -->

## Changes

<!-- List the key changes -->

-

## Checklist

- [ ] Code compiles (`cargo build`)
- [ ] Tests pass (`cargo test --lib --all-features`)
- [ ] No new clippy warnings (`cargo clippy --all-features`)
- [ ] Public APIs have documentation comments
- [ ] Python bindings updated (if Rust API changed)

## Notes

<!-- Anything reviewers should know? Breaking changes, migration notes, etc. -->
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ members = ["rust", "python"]
resolver = "2"

[workspace.package]
version = "0.1.28"
version = "0.1.29"
edition = "2024"
authors = ["zTgx <beautifularea@gmail.com>"]
license = "Apache-2.0"
Expand Down
13 changes: 5 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,11 @@

</div>

**Vectorless** is a reasoning-native document engine designed to be the foundational layer for AI applications that need structured access to documents, with the core written in Rust. It does not use vector databases, embeddings, or similarity search. Instead, it transforms documents into hierarchical semantic trees and uses the LLM itself to navigate and retrieve — purely LLM-guided, from indexing to querying.
**Vectorless** is a reasoning-native document engine designed to be the foundational layer for AI applications that need structured access to documents, with the core written in Rust. It does not use vector databases, embeddings, or similarity search. Instead, it will reason through any of your structured documents — **PDFs, Markdown, reports, contracts** — and retrieve only what's relevant. Nothing more, nothing less.



## Why Vectorless

Most document retrieval solutions rely on vector similarity — splitting documents into chunks, embedding them, and searching by cosine distance. This works for rough topic matching, but breaks down when you need **precision**: specific numbers, cross-section references, or multi-step reasoning across a document.

Vectorless takes a different approach. No vectors at all. It builds a **semantic tree index** of each document — preserving the original hierarchy — and uses the LLM itself to navigate that structure. The LLM generates the tree during indexing and reasons through it during retrieval. Pure LLM guidance, end to end.
## How It Works

<div align="center">
<img src="https://vectorless.dev/img/workflow.svg" alt="Vectorless Workflow" width="900">
Expand All @@ -48,6 +44,7 @@ async fn main() -> vectorless::Result<()> {
let engine = EngineBuilder::new()
.with_key("sk-...")
.with_model("gpt-4o")
.with_endpoint("https://api.openai.com/v1")
.build()
.await?;

Expand Down Expand Up @@ -77,7 +74,7 @@ import asyncio
from vectorless import Engine, IndexContext, QueryContext

async def main():
engine = Engine(api_key="sk-...", model="gpt-4o")
engine = Engine(api_key="sk-...", model="gpt-4o", endpoint="https://api.openai.com/v1")

# Index a document
result = await engine.index(IndexContext.from_path("./report.pdf"))
Expand Down Expand Up @@ -130,7 +127,7 @@ result = await engine.query(
Indexed documents are stored in a workspace — there's no need to reprocess files between sessions:

```python
engine = Engine(api_key="sk-...", model="gpt-4o")
engine = Engine(api_key="sk-...", model="gpt-4o", endpoint="https://api.openai.com/v1")

# List all indexed documents
docs = await engine.list()
Expand Down
17 changes: 17 additions & 0 deletions docs/docs/api-reference.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
sidebar_position: 9
title: API Reference
description: Complete API reference for Vectorless Rust crate and Python SDK.
---

# API Reference

> This page is a work in progress. The full API reference will be published in a future update.

In the meantime, you can refer to the following resources:

- **Rust crate docs**: [docs.rs/vectorless](https://docs.rs/vectorless) — auto-generated documentation from source code
- **Python SDK docs**: Available via `help(vectorless)` in an interactive Python session
- **Source code**: [github.com/vectorlessflow/vectorless](https://github.com/vectorlessflow/vectorless)

For usage examples, see [Quick Query](/docs/examples/quick-query), [Multi-Document](/docs/examples/multi-document), and [Batch Indexing](/docs/examples/batch-indexing).
4 changes: 2 additions & 2 deletions docs/docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ const config: Config = {
},
{
label: 'API Reference',
href: 'https://docs.rs/vectorless',
to: '/docs/api-reference',
},
],
},
Expand All @@ -133,7 +133,7 @@ const config: Config = {
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} Vectorless`,
copyright: `Copyright \u00A9 ${new Date().getFullYear()} Vectorless`,
},
prism: {
theme: prismThemes.github,
Expand Down
1 change: 1 addition & 0 deletions docs/sidebars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ const sidebars: SidebarsConfig = {
'sdk/rust',
],
},
'api-reference',
{
type: 'category',
label: 'Examples',
Expand Down
8 changes: 4 additions & 4 deletions docs/src/components/GitHubStar/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
import { FaGithub, FaStar } from 'react-icons/fa';
import { FaGithub } from 'react-icons/fa';
import styles from './styles.module.css';

function formatStars(count: number | null): string {
Expand Down Expand Up @@ -40,16 +40,16 @@ export default function GitHubStar(): React.ReactElement {
rel="noopener noreferrer"
className={styles.githubStarButton}
>
<FaGithub size={14} />
<FaGithub size={16} />
<span className={styles.githubStarText}>Star</span>
</a>
{loading ? (
<div className={styles.githubStarCount}>
<span className={styles.spinner}>...</span>
<span className={styles.spinner}>&hellip;</span>
</div>
) : (
<a
href="https://github.com/vectorlessflow/vectorless/stargazers"
href="https://github.com/vectorlessflow/vectorless"
target="_blank"
rel="noopener noreferrer"
className={styles.githubStarCount}
Expand Down
4 changes: 2 additions & 2 deletions docs/src/components/GitHubStar/styles.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
border-radius: 3px;
text-decoration: none;
font-size: 12px;
font-weight: 700;
font-weight: 600;
line-height: 24px;
transition: background-color 0.2s;
}
Expand Down Expand Up @@ -46,7 +46,7 @@
margin-left: 5px;
padding: 0 5px;
font-size: 12px;
font-weight: 700;
font-weight: 600;
line-height: 24px;
border: 1px solid #d5d5d5;
border-radius: 3px;
Expand Down
118 changes: 93 additions & 25 deletions docs/src/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,26 @@

:root {
--primary: #AF788B;
--primary-dark: #96637A;
--primary-dark: #8B5E6F;
--primary-deeper: #6E4556;
--primary-light: #C9A0AE;
--primary-soft: rgba(175, 120, 139, 0.12);
--text: #1e293b;
--text-light: #64748b;
--text-light: #5a4a52;
--bg: #ffffff;
--bg-secondary: #fdf8f9;
--border: #e8dde1;
--bg-secondary: #F5EBEE;
--bg-offset: #F6F8FA;
--card-bg: #FAF5F7;
--border: #E2E8F0;
--code-bg: #0F172A;
--code-text: #E2E8F0;
--code-comment: #6272A4;
--code-keyword: #FF79C6;

--ifm-color-primary: #AF788B;
--ifm-color-primary-dark: #96637A;
--ifm-color-primary-darker: #8d5a6f;
--ifm-color-primary-darkest: #6e4556;
--ifm-color-primary-dark: #8B5E6F;
--ifm-color-primary-darker: #7a5062;
--ifm-color-primary-darkest: #6E4556;
--ifm-color-primary-light: #C9A0AE;
--ifm-color-primary-lighter: #d3b0bb;
--ifm-color-primary-lightest: #e8d0d8;
Expand All @@ -26,6 +34,19 @@
}

[data-theme='dark'] {
--text: #EEF2FF;
--text-light: #8B9AB0;
--bg: #0A0C10;
--bg-secondary: #11151A;
--bg-offset: #11151A;
--card-bg: #11151A;
--border: #1E293B;
--primary-soft: rgba(201, 160, 174, 0.15);
--code-bg: #010409;
--code-text: #E2E8F0;
--code-comment: #6272A4;
--code-keyword: #FF79C6;

--ifm-color-primary: #C9A0AE;
--ifm-color-primary-dark: #b88d9d;
--ifm-color-primary-darker: #af7f91;
Expand All @@ -36,57 +57,104 @@
--docusaurus-highlighted-code-line-bg: rgba(175, 120, 139, 0.2);
}

/* Navbar: no border, no shadow, match homepage bg */
/* ===== Navbar ===== */
.navbar {
background-color: #fdf8f9 !important;
background-color: var(--bg) !important;
border-bottom: none !important;
box-shadow: none !important;
height: 68px !important;
padding: 0 1.5rem !important;
}

.navbar__inner {
height: 68px !important;
max-width: 1200px;
margin: 0 auto;
}

.navbar__brand {
height: 68px !important;
}

.navbar__title {
font-size: 1.4rem !important;
font-weight: 700 !important;
color: var(--text) !important;
letter-spacing: -0.01em;
}

.navbar__logo {
height: 36px;
margin-right: 0.6rem;
}

.navbar__link {
font-size: 0.95rem !important;
font-weight: 500 !important;
color: var(--text-light) !important;
transition: color 0.15s !important;
}

.navbar__link:hover {
color: var(--primary-dark) !important;
}

.navbar__link--active {
color: var(--primary-dark) !important;
}

[data-theme='dark'] .navbar {
background-color: var(--ifm-background-color) !important;
background-color: var(--bg) !important;
border-bottom: none !important;
}

[data-theme='dark'] .navbar__title {
color: var(--text) !important;
}

[data-theme='dark'] .navbar__link {
color: var(--text-light) !important;
}

[data-theme='dark'] .navbar__link:hover {
color: var(--primary-light) !important;
}

[data-theme='dark'] .navbar__link--active {
color: var(--primary-light) !important;
}

/* ===== Footer ===== */
.footer {
background-color: transparent !important;
padding: 3rem 1.5rem 2rem;
padding: 5rem 1.5rem 1.5rem;
}

/* Column titles */
.footer__title {
font-size: 0.8rem;
font-size: 0.85rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--text);
margin-bottom: 0.75rem;
margin-bottom: 1rem;
}

/* Link items */
.footer__link-item {
font-size: 0.88rem;
font-size: 0.92rem;
color: var(--text-light);
line-height: 1.8;
line-height: 2;
transition: color 0.15s;
}

.footer__link-item:hover {
color: var(--primary);
}

/* Hide external-link icons */
.footer__link-item svg {
display: none;
}

/* Copyright */
.footer__copyright {
text-align: center;
font-size: 0.8rem;
font-size: 0.88rem;
color: var(--text-light);
letter-spacing: 0.03em;
margin-top: 2rem;
padding-top: 1.5rem;
border-top: 1px solid var(--border);
}
Loading
Loading