var raw = JSON.stringify({
input: text,
model: "text-embedding-ada-002",
user: user,
});
var requestOptions = {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: process.env.OPEN_AI,
},
body: raw,
redirect: "follow",
};
var xq;
console.log("Creating Embedding...");
// Make Callout to OpenAI
let embedding_response = await fetch(
"https://api.openai.com/v1/embeddings",
requestOptions
)
.then((response) => response.json())
.then((json) => {
console.log(json);
xq = json.data[0].embedding;
})
.catch((error) => {
console.error(error);
res.status(500).send("An error occurred");
});
var raw = JSON.stringify({
namespace: pinecone_namespace,
vector: xq,
filter: { product: { $eq: _product } },
includeValues: false,
includeMetadata: true,
topK: 3,
});
var requestOptions = {
method: "POST",
headers: {
"Content-Type": "application/json",
Host: pinecone_index,
"Content-Length": 60,
"Api-Key": pinecone_api_key,
},
body: raw,
redirect: "follow",
};
// Make Callout to Pinecone
var contexts;
console.log("Querying Pinecone...");
let pinecone_query_response = await fetch(
`https://${pinecone_index}/query`,
requestOptions
)
.then((response) => response.json())
.then((json) => {
console.log(json);
console.log(json.matches[0].metadata);
console.log(json.matches[0].metadata.text);
contexts = json.matches.map((x) => x.metadata.text.substring(0, 2000));
})
.catch((error) => {
console.error(error);
return res.status(500).send("An error occurred");
});
https://docs.pinecone.io/docs/metadata-filtering