your1 / qdrant
Qdrant的PHP客户端
v0.5.2
2024-02-14 12:46 UTC
Requires
- php: ^7.4
- guzzlehttp/guzzle: ^6.5|^7.5
- guzzlehttp/psr7: ^1.9.1|^2.0
- psr/http-client: ^1.0
- psr/http-message: ^1.0|^2.0
- psr/log: ^1.0|^2.0|^3.0
- webmozart/assert: ^1.11
Requires (Dev)
README
注意;
这是为PHP7.4移植的版本!
Qdrant是一个向量相似度引擎和向量数据库。它作为API服务部署,提供对高维向量的搜索。使用Qdrant,可以将嵌入或神经网络编码器转化为完整的应用程序,用于匹配、搜索、推荐等更多功能!
安装
您可以使用composer在PHP项目中安装客户端
composer require your1/qdrant
创建集合的示例
use Qdrant\Endpoints\Collections; use Qdrant\Http\GuzzleClient; use Qdrant\Models\Request\CreateCollection; use Qdrant\Models\Request\VectorParams; include __DIR__ . "/../vendor/autoload.php"; include_once 'config.php'; $config = new \Qdrant\Config(QDRANT_HOST); $config->setApiKey(QDRANT_API_KEY); $client = new Qdrant(new GuzzleClient($config)); $createCollection = new CreateCollection(); $createCollection->addVector(new VectorParams(1024, VectorParams::DISTANCE_COSINE), 'image'); $response = $client->collections('images')->create($createCollection);
现在,我们可以插入一个点
use Qdrant\Models\PointsStruct; use Qdrant\Models\PointStruct; use Qdrant\Models\VectorStruct; $points = new PointsStruct(); $points->addPoint( new PointStruct( (int) $imageId, new VectorStruct($data['embeddings'][0], 'image'), [ 'id' => 1, 'meta' => 'Meta data' ] ) ); $client->collections('images')->points()->upsert($points);
在上传数据时,如果您想等待上传实际发生,可以使用查询参数
$client->collections('images')->points()->upsert($points, ['wait' => 'true']);
您可以查看更多参数:https://qdrant.github.io/qdrant/redoc/index.html#tag/points/operation/upsert_points
带有过滤器的搜索
use Qdrant\Models\Filter\Condition\MatchString; use Qdrant\Models\Filter\Filter; use Qdrant\Models\Request\SearchRequest; use Qdrant\Models\VectorStruct; $searchRequest = (new SearchRequest(new VectorStruct($embedding, 'elev_pitch'))) ->setFilter( (new Filter())->addMust( new MatchString('name', 'Palm') ) ) ->setLimit(10) ->setParams([ 'hnsw_ef' => 128, 'exact' => false, ]) ->setWithPayload(true); $response = $client->collections('images')->points()->search($searchRequest);