You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+2-46Lines changed: 2 additions & 46 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,8 +36,8 @@ Most search tools force you to choose: keyword search (fast, exact matches) or v
36
36
37
37
## Features
38
38
39
-
- 🎯 **Hybrid search + reranking** — AND keywords + OR keywords + vector semantic, merged via weighted [RRF](https://plg.uwaterloo.ca/~gvcormac/cormacksigir09-rrf.pdf), with optional cross-encoder reranking and per-category fusion
40
-
- 📦 **Local to cloud** — start with a single SQLite file, scale to cloud providers for vectors, embeddings, and reranking
39
+
- 🎯 **Hybrid search** — AND keywords + OR keywords + vector semantic, merged via weighted [RRF](https://plg.uwaterloo.ca/~gvcormac/cormacksigir09-rrf.pdf), with per-category fusion
40
+
- 📦 **Local to cloud** — start with a single SQLite file, scale to cloud providers for vectorsand embeddings
41
41
- 🌳 **AST-aware code chunking** — powered by [`code-chunk`](https://github.com/supermemoryai/code-chunk), uses [tree-sitter](https://tree-sitter.github.io/) to split on function/class boundaries with entity, scope, and import metadata
42
42
- 🔍 **Search filtering** — narrow results by file type, path prefix, or any custom field
rerank: awaitcrossEncoder(), // local cross-encoder, no API key
132
-
})
133
-
```
134
-
135
-
The reranker automatically over-fetches 3x candidates, re-scores them, then trims to your requested `limit`. Results without content are passed through unchanged.
136
-
137
-
You can also pass any function matching `(query: string, results: SearchResult[]) => Promise<SearchResult[]>`:
138
-
139
-
```ts
140
-
// Custom reranker (e.g. Cohere rerank API)
141
-
rerank: async (query, results) => {
142
-
const reranked =awaitcohereRerank(query, results)
143
-
returnreranked
144
-
}
145
-
```
146
-
147
117
### Split-Category Search
148
118
149
119
When one category of documents (e.g. prose docs) outnumbers another (e.g. code definitions), the majority can drown out minority results. Split-category search fixes this by running parallel filtered searches per category and fusing with RRF — each category gets equal representation regardless of volume.
0 commit comments