Public
Like
PineconeIndex
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v122View latest version
A simple interface for building and querying Pinecone vector databases. Search through your documents using natural language queries.
import PineconeIndex from "https://esm.town/v/peterqliu/PineconeIndex/PineconeIndex";
// set up your environment variables
const pineconeKey = Deno.env.get("PINECONE_KEY");
const modelToken = Deno.env.get("OPENAI_KEY");
const index = new PineconeIndex({
name: "2025-all-docs",
model: "text-embedding-ada-002",
dimensions: 1536,
pineconeKey,
modelToken,
});
await index.create();
// Using the methods directly (see bottom of README for HTTP access)
const results = await index.query("machine learning applications");
await index.upsertRecords(["Document 1", "Document 2"]);
await index.empty();
Find the most relevant documents for your query.
const results = await index.query("your search text");
Returns:
{ "matches": [ { "id": "doc-123", "score": 0.95, "metadata": { "text": "Machine learning is transforming..." } } ] }
Upload new documents to your index.
await index.upsertRecords([
"First document content",
"Second document content",
]);
Remove all documents from your index.
await index.empty();
Create a new Pinecone index (if it doesn't exist).
await index.create();
import PineconeIndex from "https://esm.town/v/peterqliu/PineconeIndex/PineconeIndex";
const index = new PineconeIndex({
name: "my-documents",
model: "text-embedding-ada-002",
dimensions: 1536,
pineconeKey: Deno.env.get("PINECONE_KEY"),
modelToken: Deno.env.get("OPENAI_KEY"),
});
// Add some documents
await index.upsertRecords([
"AI is revolutionizing healthcare",
"Machine learning enables automation",
"Solar energy is becoming more efficient",
]);
// Search for relevant documents
const results = await index.query("renewable energy technologies");
console.log(results.matches);
PineconeIndex also provides handleRequest as a convenience method to access
your indices via HTTP. This is useful when multiple other vals need to access,
or for granting access without sharing Pinecone or OpenAI keys.
const index = new PinconeIndex({...});
export default async function (req: Request): Promise<Response> {
return await index.handleRequest(req);
}
Operations are determined by the URL path. The first segment after the domain specifies the operation to perform.
const API_URL = "https://your-server-url.web.val.run";
// Search for documents: append the desired operation to the url
const searchResponse = await fetch(`${API_URL}/query/`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify("artificial intelligence trends"),
});