Files
RAG-Lambdas/README.md
2026-08-12 19:41:32 -04:00

2.4 KiB
Raw Blame History

RAG Lambdas - Reliable, Source Grounded Serverless Retrevial Augmented Generation Pipeline

AWS Lambda functions for source-grounded Q&A: ingest documents from S3 to Pinecone, answer questions with citations and a groundedness score.

Embeddings and reranking use the Voyage API; generation and NLI use Anthropic. Lambdas need in/outbound HTTPS to api.voyageai.com and api.anthropic.com for REST API interactions.

Pipeline

ingest:
  S3 object
    → overlapping ~2000-char chunks
    → Voyage voyage-3 (input_type=document)
    → Pinecone upsert { text, source, chunkIndex }

query:
  question
    → Voyage voyage-3 (input_type=query)
    → Pinecone top-20 (cosine)
    → Voyage rerank-2 → top-5
    → Claude opus-4-6 (JSON answer + citations + follow-ups)
    → strip citation indices that are not in the retrieved set
    → groundedness:
         A. per sentence, rerank-2(sentence, cited chunk texts) → max score
         B. optional Haiku NLI: supported | contradicted | unsupported
         C. linear ramp on rerank scores (0.2–0.8, not cosine 0.35–0.65)
    → { answer, citations, groundednessScore, followUpQuestions, contextUsed }

Note: Groundedness is not bi-encoder cosine. Cosine is used only for Pinecone ANN retrieval. The badge is Voyage rerank-2 over cited chunk text, with an optional Haiku entailment pass.

Optional Rerank

GROUNDEDNESS_MODE=rerank skips the Haiku LLM-judge (less expensive/lower latency). rerank_nli (default) runs both.

Raw per-sentence rerank scores are logged as sentence_groundedness (for planned isotonic calibrator fit to labeled pairs - future update).

Pinecone index

Voyage-3 embeddings are 1024-dimensional. Create a new index, then ingest.

  • metric: cosine
  • dimension: 1024

Environment

Copy .env.example and set:

Variable Purpose
VOYAGE_API_KEY voyage-3 embed + rerank-2
ANTHROPIC_API_KEY opus-4-6 generation + Haiku NLI
PINECONE_API_KEY vector store
PINECONE_INDEX_NAME 1024-d cosine index
GROUNDEDNESS_MODE rerank or rerank_nli

Lambdas

  • ingest.js — S3 trigger. Chunks, embeds, upserts.
  • query.js — API Gateway / HTTP. Body: { "question": "..." }.

Shared code lives in lib/. Package both handlers with node_modules (Node 18+, ESM: "type": "module" in package.json).

npm install