トップK結果の取得
ベクターデータベースに埋め込みを保存した後、それらをクエリして類似したコンテンツを見つける必要があります。
query
メソッドは、入力埋め込みに対して意味的に最も類似したチャンクを関連性でランク付けして返します。topK
パラメータを使用すると、返す結果の数を指定できます。
この例は、Pineconeベクターデータベースから類似したチャンクを取得する方法を示しています。
import { openai } from "@ai-sdk/openai";
import { PineconeVector } from "@mastra/pinecone";
import { MDocument } from "@mastra/rag";
import { embedMany } from "ai";
const doc = MDocument.fromText("Your text content...");
const chunks = await doc.chunk();
const { embeddings } = await embedMany({
values: chunks.map(chunk => chunk.text),
model: openai.embedding("text-embedding-3-small"),
});
const pinecone = new PineconeVector("your-api-key");
await pinecone.createIndex({
indexName: "test_index",
dimension: 1536,
});
await pinecone.upsert({
indexName: "test_index",
vectors: embeddings,
metadata: chunks?.map((chunk: any) => ({ text: chunk.text })),
});
const topK = 10;
const results = await pinecone.query({
indexName: "test_index",
queryVector: embeddings[0],
topK,
});
console.log(results);
GitHubで例を見る