probots-io / pinecone-php
Pinecone Vector Database (pinecone.io) 的非官方 PHP 客户端
Requires
- php: ^8.2
- saloonphp/saloon: ^3.6
Requires (Dev)
- pestphp/pest: ^2.4
- pestphp/pest-plugin-faker: ^2.0
- pestphp/pest-plugin-watch: ^2.0
- phpstan/phpstan: ^1.10
- symfony/var-dumper: ^6.2
- vlucas/phpdotenv: ^5.5
This package is auto-updated.
Last update: 2024-09-24 09:16:39 UTC
README
一个美丽、可扩展的 PHP 包,用于与您的 pinecone.io 索引、集合和向量进行通信,由 Saloon 提供支持。
信息 从 1.x 版本开始,我们使用支持无服务器的最新 Pinecone API。如果您需要旧版 API,请使用 1.0.0 之前的版本!
介绍
此 API 提供了一个丰富功能、优雅的基准,用于与 pinecone.io API 进行工作。开发者可以安装并利用此 API,帮助他们轻松、美观地集成 pinecone.io。
安装
composer require probots-io/pinecone-php
特性
目前支持基于 官方文档 的 pinecone.io API 中所有可用的端点
认证
目前仅支持通过 API 密钥进行认证。首先,您需要在您的 pinecone.io 实例中创建一个 API 密钥。
use \Probots\Pinecone\Client as Pinecone; $apiKey = 'YOUR_PINECONE_API_KEY'; // Initialize Pinecone $pinecone = new Pinecone($apiKey); // Now you are ready to make requests, all requests will be authenticated automatically.
快速入门
初始化 SDK 有两种方式。您可以在初始化时提供索引,或者稍后提供。
use \Probots\Pinecone\Client as Pinecone; $apiKey = 'YOUR_PINECONE_API_KEY'; $pinecone = new Pinecone($apiKey); // all control methods are available now, create an index or similar // e.g. $pinecone->control()->index() // later on you can provide the index $pinecone->setIndexHost('INDEX_HOST_FROM_PINECONE'); // data methods are available now // e.g. $pinecone->data()->vectors()
或
use \Probots\Pinecone\Client as Pinecone; $apiKey = 'YOUR_PINECONE_API_KEY'; $indexHost = 'INDEX_HOST_FROM_PINECONE'; $pinecone = new Pinecone($apiKey, $indexHost); // all control AND data methods are available now
信息 索引主机应包括
https://
,您可能需要将 Pinecone 返回的值前面添加此内容。
响应
所有响应都作为 Response
对象返回。请参阅 Saloon 文档 以查看所有可用方法。
控制面板
索引操作
与您的索引一起工作。
创建索引 (POD)
$response = $pinecone->control()->index('my-index')->createPod( dimension: 1536, metric: 'cosine', podType: 'p1.x1', replicas: 1 // ... more options ); if($response->successful()) { // }
创建索引 (无服务器)
$response = $pinecone->control()->index('my-index')->createServerless( dimension: 1536, metric: 'cosine', cloud: 'aws', region: 'us-west-2' // ... more options ); if($response->successful()) { // }
描述索引
$response = $pinecone->control()->index('my-index')->describe(); if($response->successful()) { // }
列出索引
$response = $pinecone->control()->index()->list(); if($response->successful()) { // }
配置索引
$response = $pinecone->control()->index('my-index')->configure( pod_type: 'p1.x1', replicas: 1 ); if($response->successful()) { // }
删除索引
$response = $pinecone->control()->index('my-index')->delete(); if($response->successful()) { // }
集合操作
也适用于您的集合。
创建集合
$response = $pinecone->control()->collections('my-collection')->create( source: 'my-index' ); if($response->successful()) { // }
描述集合
$response = $pinecone->control()->collections('my-collection')->describe(); if($response->successful()) { // }
列出集合
$response = $pinecone->control()->collections()->list(); if($response->successful()) { // }
删除集合
$response = $pinecone->control()->collections('my-collection')->delete(); if($response->successful()) { // }
数据面板
信息 这些操作需要设置索引。您可以在初始化时或在稍后设置索引。请参阅开头的描述。
向量操作
向量是 Pinecone 中的基本数据单元。使用它们。
获取索引统计信息
$response = $pinecone->data()->vectors()->stats(); if($response->successful()) { // }
更新向量
$response = $pinecone->data()->vectors()->update( id: 'vector_1', values: array_fill(0, 128, 0.14), setMetadata: [ 'meta1' => 'value1', ] ); if($response->successful()) { // }
批量更新向量
$response = $pinecone->data()->vectors()->upsert(vectors: [ 'id' => 'vector_1', 'values' => array_fill(0, 128, 0.14), 'metadata' => [ 'meta1' => 'value1', ] ]); if($response->successful()) { // }
查询向量
$response = $pinecone->data()->vectors()->query( vector: array_fill(0, 128, 0.12), topK: 1, ); if($response->successful()) { // }
删除向量
$response = $pinecone->data()->vectors()->delete( deleteAll: true ); if($response->successful()) { // }
检索向量
$response = $pinecone->data()->vectors()->fetch([ 'vector_1', 'vector_2' ]); if($response->successful()) { // }
测试
测试通过 PestPHP 完成。您可以通过在项目的根目录中运行 ./vendor/bin/pest
来运行测试。将 .env.example 复制到 .env 并相应更新。
致谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。
待办事项 - 如果您想贡献,请提交 PR
- 基于 API 文档验证参数 - 需要更多检查
- 实现自定义异常
- 添加失败测试
- 添加一些示例
- 完成文档