Skip to content

Repository files navigation

vector-doc-engine

npm version TypeScript ChromaDB Google Gemini CI Pipeline License

Production-resilient TypeScript engine for PDF document text chunking, Google Gemini vector embeddings, and local ChromaDB HNSW semantic vector search.

Vector Engine Architecture Diagram

Features

  • Recursive Sentence-Aware Chunking: Hierarchical text splitting (\n\n $\rightarrow$ \n $\rightarrow$ . $\rightarrow$ ) to preserve sentence boundaries.
  • Resilient API Processing: Exponential backoff with delay jitter retries to handle Gemini API rate limits (HTTP 429) and network dropouts.
  • Memory Efficient Ingestion: $O(1)$ streaming batch flushes to prevent heap memory exhaustion on large documents.
  • Relevance Guardrails: Bounded similarity scoring with minimum threshold filtering.

Installation

Install as a dependency in your Node.js or TypeScript project:

npm install git+https://github.com/DileepWick/vector-doc-engine.git

Or via GitHub Packages registry:

npm install @dileepwick/vector-doc-engine

Quick Start

1. Environment Configuration

Create a .env file in your root directory:

CHROMA_URL=http://localhost:8000
GEMINI_API_KEY=your_gemini_api_key
GEMINI_EMBED_MODEL=gemini-embedding-2-preview
2. Infrastructure Setup

Start a local ChromaDB instance:

docker run -p 8000:8000 chromadb/chroma
3. Programmatic Usage
View Programmatic Code Examples

Ingest PDF Document

import { ingestPdfDocument } from "@dileepwick/vector-doc-engine";

const result = await ingestPdfDocument({
  filePath: "./data/documents/sem-reg.pdf",
});

console.log(`Ingested ${result.totalChunks} chunks.`);

Perform Vector Search Query

import { queryVectorSearch } from "@dileepwick/vector-doc-engine";

const matches = await queryVectorSearch({
  query: "What are the main key takeaways?",
  topK: 3,
  minSimilarity: 0.35,
});

matches.forEach((match, idx) => {
  console.log(`[${idx + 1}] Score: ${match.score.toFixed(4)} | Excerpt: "${match.doc}"`);
});

CLI Usage

View CLI Execution Commands

Build Package

npm run build

Ingest Document via CLI

npx ts-node src/ingest.ts sem-reg.pdf

Query Vector Search via CLI

npx ts-node src/ask.ts "What are the key takeaways?"

Repository Structure

vector-doc-engine/
├── src/
│   ├── index.ts               # Public API exports
│   ├── ingest.ts              # Document ingestion API
│   ├── ask.ts                 # Vector search query API
│   ├── chunker.ts             # Recursive text chunking utility
│   └── embedder.ts            # Gemini API embedder with retries
├── data/documents/            # Default document storage
├── dist/                      # Built JavaScript binaries & declaration files
├── docs/                      # Technical documentation & failure mode audits
└── tests/                     # Unit test suites (Jest)

Documentation Links

About

Production-resilient TypeScript engine for PDF text chunking, Gemini vector embeddings, and ChromaDB HNSW semantic search.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages