Search
Code115
Role: optional self-hosted local inference gateway for text/audio/vision/embeddings without changing NCA PRIMARY SPECIALTY or authority.
const OPENAI_EMBEDDINGS_MODEL = "text-embedding-3-small";const PINECONE_API_VERSION = "2024-10";async function embedQuery(query: string, apiKey: string): Promise<number[]> { const res = await fetch("https://api.openai.com/v1/embeddings", { method: "POST", }, body: JSON.stringify({ model: OPENAI_EMBEDDINGS_MODEL, input: query }), }); if (!res.ok) { throw new Error(`OpenAI embeddings request failed (${res.status}): ${await res.text()}`); }/^\/api\/v1\/chat\/completions$/,/^\/api\/v1\/embeddings$/,/^\/api\/v1\/models$/,
const data = await resp.json(); return data.embeddings.map((e: any) => e.values);} const allTexts = [query, ...candidates]; const embeddings = await embedBatch(allTexts); const queryVec = embeddings[0]; const candVecs = embeddings.slice(1); text: "NVIDIA embeddings help convert text into vector representations for similarity search", metadata: { category: "ai", tags: ["nvidia", "embeddings"] }, },import { GpuContext } from "./gpu-core.ts";import { Embeddings } from "./model-embeddings.ts";import { TransformerBlock } from "./model-block.ts";export class Transformer { emb: Embeddings; blocks: TransformerBlock[]; this.cfg = cfg; this.emb = new Embeddings(cfg.vocabSize, cfg.dim, cfg.maxSeqLen); this.blocks = Array.from(export class Embeddings { token: TokenEmbedding; // Embeddings: tok + pos const x0: number[][] = []; // Embeddings: tok + pos const x0: number[][] = []; // Embeddings const x0: number[][] = [];A simple interface for making and querying Pinecone vector databases. Use OpenAIembeddings to vectorize and search
async function generateQueryEmbedding(query: string): Promise<number[]> { const response = await openai.embeddings.create({ model: EMBEDDING_MODEL,const PINECONE_INDEX_NAME = Deno.env.get("PINECONE_INDEX_NAME") || "aws-ring-embeddings-small";const PINECONE_DIMENSIONS = parseInt();const OPENAI_EMBEDDINGS_MODEL = Deno.env.get("OPENAI_EMBEDDINGS_MODEL") || "text-embedding-3-small";async function embedQuestion(question: string): Promise<number[]> { const response = await openai.embeddings.create({ model: OPENAI_EMBEDDINGS_MODEL, input: question, // Step 1: embeddings const { result: embedding, ms: embedMs } = await timeStep(import type { Page, SearchOptions, SearchResult } from "./types.ts";// import { searchStrategy, generateEmbeddings } from "./placeholder.ts";// import { searchStrategy, generateEmbeddings } from "./jigsawstack-orama.ts"; // ~550ms query embeddings (no API key needed, works on Val Town)// import { searchStrategy, generateEmbeddings } from "./openai-orama.ts"; // ~100-200ms query embeddings (API), ~29ms DB overhead// import { searchStrategy, generateEmbeddings } from "./openai-cosine.ts"; // ~100-200ms query embeddings (API), <1ms cosine calc// import { searchStrategy, generateEmbeddings } from "./mixedbread-embeddings-cosine.ts"; // Mixedbread Embeddings API (mxbai-embed-large-v1) with local cosine similarity// import { searchStrategy, generateEmbeddings } from "./mixedbread.ts"; // Mixedbread Stores (managed search service, handles storage + embeddings + search)// import { searchStrategy, generateEmbeddings } from "./hf-inference-qwen3-cosine.ts"; // HF Inference Client with Qwen3-Embedding-8B (API, requires HF_TOKEN)import { searchStrategy, generateEmbeddings } from "./cloudflare-bge-cosine.ts"; // Cloudflare Workers AI (bge-large-en-v1.5, 1024-dim) with local cosine similarity// import { searchStrategy, generateEmbeddings } from "./transformers-cosine.ts"; // ~10-30ms (local embeddings, ~23MB model cached after first load)// import { searchStrategy, generateEmbeddings } from "./transformers-local-onnx.ts"; // ~10-30ms (pre-downloaded local ONNX models, NO downloads, NO isolate loading)// Embeddings function for recalculate - uses same import as search strategyexport const getActiveEmbeddingsFunction = (): ((content: string) => Promise<number[] | null>) => { return generateEmbeddings;};// Transformers.js + Cosine Similarity Strategy: Local embeddings in browser/Deno// Fastest option - no API calls, runs entirely client-side // Load feature extraction pipeline with all-MiniLM-L6-v2 model // This is a small, fast model optimized for embeddings (~86MB, ~384 dims) // Downloads from Hugging Face on first run, then uses cache (~150ms vs several seconds)// Generate embeddings using transformers.js (runs locally, no API calls)export const generateEmbeddings = async (content: string): Promise<number[] | null> => { try { // Generate embeddings - returns a tensor, we need to extract the array const output = await pipeline(content, { const errorMessage = error instanceof Error ? error.message : String(error); console.error("Transformers.js embeddings failed:", errorMessage); return null; name: "transformers-cosine", description: "Semantic search using Transformers.js local embeddings with cosine similarity (fastest, no API calls)", search: async (query: string, pages: Page[], options: SearchOptions = {}): Promise<SearchResult[]> => { const queryEmbedStart = performance.now(); const queryEmbedding = await generateEmbeddings(query); if (enableTiming) { for (const page of pages) { const pageEmbedding = page.embeddings; if (!pageEmbedding || pageEmbedding.length !== queryEmbedding.length) { continue; // Skip pages without embeddings or wrong dimension }