6.9 KiB
6.9 KiB
import { load } from "jsr:@std/dotenv";
import OpenAI from "jsr:@openai/openai";
const env = await load({
export: true,
});
const openai = new OpenAI();
import { createClient } from "@supabase/supabase-js";
const supabaseUrl = Deno.env.get("SUPABASE_URL") || env.SUPABASE_URL;
const supabaseKey = Deno.env.get("SUPABASE_ANON_KEY") || env.SUPABASE_ANON_KEY;
const supabase = createClient(supabaseUrl, supabaseKey);
const textos = [
"Los vectores se usan con el cliente de OPENAI embeddings",
];
for (const contenido of textos) {
const emb = await openai.embeddings.create({
model: "text-embedding-3-small",
input: contenido,
});
const embedding = emb.data[0].embedding;
console.log(emb);
const { error } = await supabase.from("documentos").insert({
contenido,
embedding,
});
if (error) throw error;
}
console.log("✅ Insertados textos con embeddings");
const consulta = "¿Cómo son buscados vectores?";
const emb = await openai.embeddings.create({
model: "text-embedding-3-small",
input: consulta,
});
const query_embedding = emb.data[0].embedding;
const { data, error } = await supabase.rpc("buscar_documentos", {
query_embedding,
match_count: 3,
});
if (error) throw error;
console.log(`🔎 Consulta: ${consulta}\n`);
for (const r of data ?? []) {
console.log(`- ${r.contenido}`);
console.log(` Similaridad: ${Number(r.similarity).toFixed(4)}\n`);
}