برنامه نویسی

🧭 قسمت 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!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا