gregpriday/laravel-scout-qdrant

这是我开发的laravel-scout-qdrant包

0.2.0 2023-05-29 06:09 UTC

This package is auto-updated.

Last update: 2024-09-17 11:51:10 UTC


README

laravel-scout-qdrant包通过利用Scout、Qdrant和OpenAI,在Laravel应用程序中引入了向量搜索功能。该包使用OpenAI将应用程序数据转换为向量,然后使用Qdrant(一个强大的向量数据库管理系统)对这些向量进行索引和搜索。

注意:此包仍在开发中,可能还不适合生产环境使用。然而,随着兴趣和支持的增长,计划不断扩展和改进。

先决条件

  • Qdrant - 此包的先决条件是安装Qdrant。我们建议使用Qdrant Cloud以获得更可扩展和更稳健的解决方案,但也可以进行本地安装。有关安装说明,请参阅此处

  • OpenAI for Laravel - 也要为Laravel设置OpenAI。使用以下命令发布服务提供者

php artisan vendor:publish --provider="OpenAI\Laravel\ServiceProvider"

遵循OpenAI for Laravel页面上的说明以配置OpenAI变量。

安装

通过Composer安装包

composer require gregpriday/laravel-scout-qdrant

使用以下命令添加迁移

php artisan vendor:publish --tag="scout-qdrant-migrations"

使用以下命令发布配置文件

php artisan vendor:publish --tag="scout-qdrant-config"

配置

安装后,您应该在您的config/scout-qdrant.php文件中配置qdrant设置

return [
    'qdrant' => [
        'host' => env('QDRANT_HOST', 'https://'),
        'key' => env('QDRANT_API_KEY', null),
        'storage' => env('QDRANT_STORAGE', 'database/qdrant'),
    ],
    'vectorizer' => env('QDRANT_VECTORIZER', 'openai'),
];

QDRANT_HOST密钥定义了Qdrant服务的位置。如果您正在使用Qdrant Cloud或在不同服务器上的Docker容器,请相应地更新此值。QDRANT_API_KEY密钥用于指定必要的Qdrant API密钥。

QDRANT_STORAGE密钥指示Qdrant将存储文件的位置。默认情况下,此值设置为database/qdrant,但您可以根据您的配置指定不同的位置。

QDRANT_VECTORIZER密钥用于定义要使用的向量器。默认设置为'openai'。如果您有一个自定义向量器,可以在此处指定。

有关配置Qdrant的更多详细信息,请参阅Qdrant文档

此外,请确保在您的.env文件中将SCOUT_DRIVER配置为使用qdrant驱动程序

SCOUT_DRIVER=qdrant

您的模型还应包含一个toSearchableArray方法,其中包含一个vector键。此键将使用OpenAI转换为向量

public function toSearchableArray()
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'vector' => $this->text,
        // more attributes...
    ];
}

使用

您可以使用此包就像使用Laravel Scout一样,但具有基于向量的搜索的优势。此功能提供了更精确和复杂的搜索结果。

有关使用说明的更多详细信息,请访问Laravel Scout文档

Qdrant Docker管理命令

使用以下命令管理您的Qdrant Docker容器

安装Qdrant

php artisan qdrant:install

此命令拉取Qdrant Docker镜像并检查您的机器上是否已安装Docker。如果没有,该命令将提供安装说明。

启动Qdrant

php artisan qdrant:start

使用默认端口6333,存储路径为database/qdrant,重启策略为unless-stopped启动您的Qdrant Docker容器。您可以使用--port--storage--restart选项分别指定不同的端口、存储路径或重启策略

php artisan qdrant:start --port=6334 --storage=custom/qdrant --restart=always

重启Qdrant

php artisan qdrant:restart

重启您的 Qdrant Docker 容器。此命令接受 --port--storage--restart 选项。

php artisan qdrant:restart --port=6334 --storage=custom/qdrant --restart=always

检查 Qdrant 状态

php artisan qdrant:status

提供您的 Qdrant Docker 容器的状态,包括容器 ID、镜像、命令、创建时间、状态、端口和名称等详细信息。

停止 Qdrant

php artisan qdrant:stop

停止您的 Qdrant Docker 容器。使用 --kill 选项来强制停止容器而不是正常停止。

创建自定义向量器

要创建自定义向量器,请确保您有自定义模型或第三方服务。然后,创建一个实现 GregPriday\ScoutQdrant\Vectorizer 的新类。此接口要求实现一个方法:vectorize(string $text): array

示例

use GregPriday\LaravelScoutQdrant\Vectorizer\VectorizerInterface;

class MyVectorizer implements VectorizerInterface
{
    public function embedDocument(string $text): array
    {
        // Create a vector from the text using your model
    }
    
    public function embedQuery(string $text): array
    {
        // Create a vector from the text using your model
    }
}

在您的 scout-qdrant.php 配置文件中指定您的自定义向量器

return [
    // other config values...
    'vectorizer' => App\MyVectorizer::class,
];

现在您的自定义向量器将用于为您的 Scout 记录创建向量。

测试

使用以下命令启动 Qdrant 进行测试

docker pull qdrant/qdrant
docker run -p 6333:6333 -v $(pwd)/database/qdrant:/qdrant/storage qdrant/qdrant

使用以下命令执行测试

composer test

变更日志

请访问 变更日志 查看更新和更改。

贡献

贡献指南可在 贡献文件 中找到。

安全漏洞

如果您发现安全漏洞,请按照我们的 安全策略 报告。

鸣谢

许可证

Laravel Scout Qdrant 驱动程序是开源软件,根据 MIT 许可证 授权。