Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@taura-ai/retrieval-core

theg123900.1.0TypeScript support: included

Reusable retrieval primitives for Taura-style “type → recall” apps.

retrieval, rerank, pgvector, taura, hybrid-search

readme

@taura/retrieval-core

Reusable retrieval primitives for Taura-style “type → recall” apps.

This package provides:

  • Data types for queries, filters, and media items
  • Fast local scoring utilities (cosine similarity, time/geo boosts)
  • A light reranker that combines vector similarity + heuristics
  • Helpers to generate parameterized pgvector SQL snippets

Install (from this monorepo via pnpm workspace) or npm i @taura-ai/retrieval-core when published.

Quick start

import {
  cosine,
  rerank,
  buildPgvectorCosineQuery,
  TauraClient,
  hybridSearch,
  type MediaItem,
  type RerankOptions,
  type SearchFilters,
} from '@taura-ai/retrieval-core'

// Given a query embedding and candidates with embeddings
const q = Float32Array.from([/* 768-dim */])
const candidates: MediaItem[] = [
  { id: '1', userId: 'u', modality: 'image', uri: 'file:///a.jpg', embedding: Float32Array.from([...]), ts: '2023-01-02T03:00:00Z', lat: 48.858, lon: 2.295 },
  // ...
]

const opts: RerankOptions = {
  timeBoost: { kind: 'decay', halfLifeDays: 365 },
  geoBoost: { lat: 48.858, lon: 2.294, km: 50, weight: 0.1 },
  modalityPrior: { image: 1.0, pdf_page: 0.9 },
}

const ranked = rerank(q, candidates, opts).slice(0, 12)

// Server-side helper (pgvector cosine ordering)
const sql = buildPgvectorCosineQuery({ tableVec: 'media_vecs', table: 'media' })

// Typed Taura API client
const client = new TauraClient({ baseURL: 'https://api.taura.dev', token: 'Bearer <jwt>' })
const filters: SearchFilters = { modality: ['image', 'pdf_page'] }
const results = await client.search({ user_id: 'user-123', text: 'paris eiffel', top_k: 12, filters })

// Hybrid search: call API then (optionally) rerank client‑side
const hybrid = await hybridSearch(client, 'user-123', 'passport renewal june 2022', { modality: ['image'] }, { applyClientRerank: true })

See more in docs/overview.md and runnable code in examples/.

API

  • cosine(a, b): cosine similarity in [0..1]
  • rerank(queryVec, items, options): returns items with score sorted desc
  • buildPgvectorCosineQuery(config): returns a parameterized SQL string you can use in a prepared statement.

See src/index.ts for full typings.