Generative AI with Node JS in Hindi #28 Find Answers from Data using Embeddings

Find Answers from Data with Embedding


Video steps :-

  1. Generate Embedding for data
  2. Generate Embedding for Question
  3. Display Match


dotProduct.json file code


import {readFileSync} from 'fs'
import { generateEmbedding } from './index.js';

let embeddingData= readFileSync('embedding.json');
embeddingData= JSON.parse(embeddingData);
// console.log(embeddingData);

let suggestion= await generateEmbedding("please suggest me fruits");
suggestion = suggestion[0].embedding
// console.log(animal);


let similarity= embeddingData.map((embeddingItem)=>{
const embedding= embeddingItem.embedding;
return embedding.map((item,index)=>{
return embedding[index]*suggestion[index]
}).reduce((a,b)=>a+b,0)

})

similarity= similarity.map((item,index)=>{
return {value:similarity[index],input:embeddingData[index].input}
})

similarity.sort((a,b)=> b.value-a.value)
console.log(similarity);


// const data = panda.map((item,index)=>{
// return panda[index]*elephant[index]
// }).reduce((a,b)=>a+b,0)
// console.log(data);


Index.js file code


import { readFileSync, writeFileSync } from 'fs'
import OpenAI from 'openai';
import dotenv from 'dotenv'

dotenv.config();
const client = new OpenAI({ apiKey: process.env.openAI_Key })

export async function generateEmbedding(dataInArray) {
const response = await client.embeddings.create({
input: dataInArray,
model: "text-embedding-3-small"
})
return response.data;

}

function createFileForEmbedding(data, file) {
const fileData = JSON.stringify(data);
const butterData = Buffer.from(fileData);
writeFileSync(file,butterData)


}
async function readFile() {
const data = readFileSync('data.json')
const dataInArray = JSON.parse(data.toString());
let responseData = await generateEmbedding(dataInArray);
responseData= responseData.map((item,index)=>{
return { input:dataInArray[index],embedding:item.embedding }
})
createFileForEmbedding(responseData, "embedding.json")
}

// readFile()


data.json file code


[
"Lion",
"Tiger",
"Elephant",
"Dog",
"Cat",
"Mango",
"Apple",
"Banana",
"Orange",
"Grapes",
"Parrot",
"Peacock",
"Eagle",
"Sparrow",
"Pigeon",
"Horse",
"Watermelon",
"Guava",
"Crow",
"Deer"
]

embedding.js file file

https://github.com/anil-sidhu/gen-ai-with-node-js/blob/dot-productnopde/embedding.json