🧭 قسمت 3: اجرای جستجوی بردار با Pinecone

در این قسمت ، ما ادغام خواهیم کرد کلوچه، یک بانک اطلاعاتی بردار که امکان پذیر است جستجوی معناییبشر این به chatbot اجازه می دهد تا نمایش داده شدگان کاربر را درک کرده و اطلاعات مربوط به سفارش مربوطه را بدست آورید – حتی اگر این عبارت متفاوت باشد.
✅ آنچه ما پوشش خواهیم داد
- آشنایی با پایگاه داده های بردار و تعبیه
- تنظیم Pinecone
- ایجاد تعبیه از داده های سفارش
- ذخیره و بازیابی بردارها از Pinecone
🧠 1. چرا جستجوی بردار؟
جستجوی کلمات کلیدی سنتی محدودیت هایی دارد. با جستجوی بردار ، ما جا دادن داده ها (مانند خلاصه سفارش) به بردارهای با ابعاد بالا با استفاده از LLMS. این بردارها می توانند با پرس و جو کاربر (همچنین تعبیه شده) برای یافتن مسابقات از نظر معنایی مشابه مقایسه شوند.
🔧 2. Pinecone را تنظیم کنید
مشتری Pinecone را نصب کنید (قبلاً در قسمت 1 انجام شده است ، فقط در مورد):
npm install @pinecone-database/pinecone
خود را به روز کنید .env
اگر قبلاً انجام نشده است:
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_ENVIRONMENT=your_pinecone_environment
Pinecone را در پیکربندی خود اولیه کنید:
// backend/langchain/config.js
const { PineconeClient } = require('@pinecone-database/pinecone');
const initPinecone = async () => {
const client = new PineconeClient();
await client.init({
apiKey: process.env.PINECONE_API_KEY,
environment: process.env.PINECONE_ENVIRONMENT,
});
return client;
};
🧬 3.
ما با استفاده از تعبیه OpenAi Langchain ، بازنمایی های بردار از داده های سفارش را ایجاد خواهیم کرد.
// backend/langchain/embedOrders.js
const { OpenAIEmbeddings } = require('@langchain/openai');
const { initPinecone } = require('./config');
const { connectToDatabase } = require('../database/connection');
async function embedOrders() {
const db = await connectToDatabase();
const orders = await db.collection('orders').find().toArray();
const embeddings = new OpenAIEmbeddings({
openAIApiKey: process.env.OPENAI_API_KEY,
});
const pinecone = await initPinecone();
const index = pinecone.Index("ecommerce-orders");
for (const order of orders) {
const orderSummary = `
Order ID: ${order.orderId}
Customer: ${order.customerName}
Items: ${order.items.map(i => i.productName).join(', ')}
Status: ${order.status}
`;
const [embedding] = await embeddings.embedQuery(orderSummary);
await index.upsert([
{
id: order.orderId,
values: embedding,
metadata: {
orderId: order.orderId,
customerName: order.customerName,
status: order.status,
},
},
]);
}
console.log("All orders embedded and stored in Pinecone.");
}
embedOrders();
فیلمنامه را اجرا کنید:
node backend/langchain/embedOrders.js
🔍 4. یک جستجوی معنایی انجام دهید
بعداً از این استفاده خواهیم کرد تا با پرس و جوهای کاربر برای سفارش اطلاعات مطابقت داشته باشد.
// backend/langchain/searchOrder.js
const { OpenAIEmbeddings } = require('@langchain/openai');
const { initPinecone } = require('./config');
async function searchOrders(userQuery) {
const embeddings = new OpenAIEmbeddings({
openAIApiKey: process.env.OPENAI_API_KEY,
});
const pinecone = await initPinecone();
const index = pinecone.Index("ecommerce-orders");
const [queryVector] = await embeddings.embedQuery(userQuery);
const results = await index.query({
vector: queryVector,
topK: 3,
includeMetadata: true,
});
return results.matches;
}
module.exports = { searchOrders };
✅ مراحل بعدی (قسمت 4)
در قسمت بعدی ، ما خواهیم کرد:
- اجزای لانگچین را به هم وصل کنید
- بارگیری داده ها از MongoDB
- متن را به صورت پویا تقسیم و جاسازی کنید
- بازیابی و ایجاد پاسخ
🚀 با ما همراه باشید قسمت 4!