mirror of
https://git.pumpin.online/funkpower/catena.git
synced 2026-10-22 18:57:14 +00:00
Eight of them, each doing something a pipeline actually has to do, and each starting from something anyone can fetch — a public domain book from Project Gutenberg, a NASA broadcast, or a sample carried in the file. Shell, because the tools are filters first: a book to passages and what its notes cite; a recording to chapter marks, citable passages and the one ffmpeg call that makes it play on a phone; passages into pgvector and a search that asks twice and reconciles. Rust, for the case where the caller already holds the text and a subprocess would be serialising for nothing. Python, for the shape a pipeline stage takes once the reading is a library call. TypeScript, for the app side — chapter marks and deep links, and fusing two rankings in process. Three of them end with what re-ranking means, because it is two different things under one name: fusing ranked lists, which is what `rrf` does and needs no model, and a cross-encoder scoring query and passage together, which is accurate, slow, and runs over what retrieval already found.
16 lines
371 B
JSON
16 lines
371 B
JSON
{
|
|
"name": "catena-example",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"chapters": "node --experimental-strip-types src/episode-to-chapters.ts",
|
|
"search": "node --experimental-strip-types src/search-and-rerank.ts"
|
|
},
|
|
"dependencies": {
|
|
"catena": "file:../../crates/bindings/npm/dist"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22"
|
|
}
|
|
}
|