gregpriday / laravel-scout-qdrant
这是我开发的laravel-scout-qdrant包
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.7
- hkulekci/qdrant: ^0.1.0
- illuminate/contracts: ^10.0
- laravel/scout: ^10.2
- openai-php/laravel: ^0.5.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpunit/phpunit: ^10.1
- spatie/laravel-ray: ^1.26
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 许可证 授权。