برنامه نویسی

نحوه ساخت یک پایگاه داده بردار با SQLite در Laravel برای LLM

ساختن یک پایگاه داده بردار با SQLITE در Laravel برای LLMS در ویندوز ، نیاز به پیکربندی SQLITE با پشتیبانی بردار (از طریق SQLite-VSS یا Alternal PGVECTOR) ، ادغام آن با Laravel و استفاده از آن برای جستجوی بردار دارد. در اینجا یک راهنمای گام به گام وجود دارد:

مرحله 1: SQLite را با پشتیبانی بردار نصب کنید
SQLite به طور طبیعی از ذخیره وکتور پشتیبانی نمی کند ، اما می توانید آن را با استفاده از پسوند SQLite-VSS فعال کنید.

1.1 SQLite را با پشتیبانی بردار بارگیری کنید
آخرین باینری SQLite3 را از سایت رسمی SQLite بارگیری کنید.
پسوند SQLite-VSS را از اینجا بارگیری کنید.

1.2 پسوند SQLite-VSS را فعال کنید
sqlite-vss.dll (ویندوز) یا .so (linux/macos) را در فهرست پروژه خود قرار دهید.
با اصلاح پیکربندی پایگاه داده خود ، پسوند را در Laravel بارگیری کنید.

مرحله 2: برای استفاده از SQLite Laravel را پیکربندی کنید
پرونده .env را باز کنید و SQLite را تنظیم کنید:

DB_CONNECTION=sqlite
DB_DATABASE=database/database.sqlite
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پرونده پایگاه داده SQLite را ایجاد کنید:

mkdir database
touch database/database.sqlite
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اطمینان حاصل کنید که پیکربندی/database.php دارای SQLite پیکربندی شده است:

'sqlite' => [
    'driver' => 'sqlite',
    'database' => env('DB_DATABASE', database_path('database.sqlite')),
    'prefix' => '',
    'foreign_key_constraints' => true,
],
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 3: برای ذخیره سازی بردار مهاجرت ایجاد کنید
برای ذخیره سازی وکتور ، مهاجرت ایجاد کنید:

php artisan make:migration create_embeddings_table
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پرونده مهاجرت را ویرایش کنید:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;

class CreateEmbeddingsTable extends Migration
{
    public function up()
    {
        Schema::create('embeddings', function (Blueprint $table) {
            $table->id();
            $table->string('text');
            $table->json('embedding'); // Store vector as JSON
            $table->timestamps();
        });

        // Load the SQLite extension
        DB::statement("SELECT load_extension('sqlite-vss')");

        // Create a vector index for fast search
        DB::statement("CREATE VIRTUAL TABLE vss_index USING vss(embedding(1536))"); // Example: OpenAI embedding size 1536
    }

    public function down()
    {
        Schema::dropIfExists('embeddings');
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مهاجرت را اجرا کنید:

php artisan migrate
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 4: داده های بردار را وارد و پرس و جو کنید

4.1 داده های بردار را وارد کنید

اصلاح مدل تعبیه شده. php:

use Illuminate\Database\Eloquent\Model;

class Embedding extends Model
{
    protected $fillable = ['text', 'embedding'];
    protected $casts = ['embedding' => 'array']; // Convert JSON to array
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تعبیه در لاراول:

use App\Models\Embedding;

Embedding::create([
    'text' => 'Hello world',
    'embedding' => json_encode([0.1, 0.2, 0.3, ..., 0.9]) // Example vector
]);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 5: جستجوی بردار را انجام دهید

برای انجام یک جستجوی شباهت:

use Illuminate\Support\Facades\DB;

$vector = json_encode([0.1, 0.2, 0.3, ..., 0.9]); // Example query vector

$result = DB::select("SELECT text, vss_distance(embedding, ?) as distance FROM embeddings ORDER BY distance LIMIT 5", [$vector]);

return response()->json($result);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پاداش: با استفاده از OpenAi بردارها را تولید کنید

اگر در حال کار با LLM تعبیه شده (مانند OpenAI) هستید ، OpenAi-PHP را نصب کنید:

composer require openai-php/client
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس ، تعبیه کنید:

use OpenAI\Client;

$client = new Client('your-openai-api-key');

$response = $client->embeddings()->create([
    'model' => 'text-embedding-ada-002',
    'input' => 'Hello world',
]);

$embedding = $response->json()['data'][0]['embedding'];

Embedding::create([
    'text' => 'Hello world',
    'embedding' => json_encode($embedding)
]);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پایان
اکنون شما یک پایگاه داده وکتور کار در SQLite در داخل لاراول دارید ، از ذخیره بردار و جستجوی شباهت پشتیبانی می کنید-IDEAL برای برنامه های LLM مانند نسل بازیابی (RAG).

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

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

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

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