probots-io/pinecone-php

Pinecone Vector Database (pinecone.io) 的非官方 PHP 客户端

1.0.1 2024-02-21 16:15 UTC

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 之前的版本!

probots.io

介绍

此 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)

Pinecone 文档

$response = $pinecone->control()->index('my-index')->createPod(
    dimension: 1536,
    metric: 'cosine',
    podType: 'p1.x1',
    replicas: 1
    // ... more options    
);

if($response->successful()) {
    // 
}

创建索引 (无服务器)

Pinecone 文档

$response = $pinecone->control()->index('my-index')->createServerless(
    dimension: 1536,
    metric: 'cosine',
    cloud: 'aws',
    region: 'us-west-2'
    // ... more options    
);

if($response->successful()) {
    // 
}

描述索引

Pinecone 文档

$response = $pinecone->control()->index('my-index')->describe();

if($response->successful()) {
    // 
}

列出索引

Pinecone 文档

$response = $pinecone->control()->index()->list();

if($response->successful()) {
    // 
}

配置索引

Pinecone 文档

$response = $pinecone->control()->index('my-index')->configure(
    pod_type: 'p1.x1',
    replicas: 1
);

if($response->successful()) {
    // 
}

删除索引

Pinecone 文档

$response = $pinecone->control()->index('my-index')->delete();

if($response->successful()) {
    // 
}

集合操作

也适用于您的集合。

创建集合

Pinecone 文档

$response = $pinecone->control()->collections('my-collection')->create(
    source: 'my-index'
);

if($response->successful()) {
    // 
}

描述集合

Pinecone 文档

$response = $pinecone->control()->collections('my-collection')->describe();

if($response->successful()) {
    // 
}

列出集合

Pinecone 文档

$response = $pinecone->control()->collections()->list();

if($response->successful()) {
    // 
}

删除集合

Pinecone 文档

$response = $pinecone->control()->collections('my-collection')->delete();

if($response->successful()) {
    // 
}

数据面板

信息 这些操作需要设置索引。您可以在初始化时或在稍后设置索引。请参阅开头的描述。

向量操作

向量是 Pinecone 中的基本数据单元。使用它们。

获取索引统计信息

Pinecone 文档

$response = $pinecone->data()->vectors()->stats();

if($response->successful()) {
    // 
}

更新向量

Pinecone 文档

$response = $pinecone->data()->vectors()->update(
    id: 'vector_1',
    values: array_fill(0, 128, 0.14),
    setMetadata: [
        'meta1' => 'value1',
    ]
);

if($response->successful()) {
    // 
}

批量更新向量

Pinecone 文档

$response = $pinecone->data()->vectors()->upsert(vectors: [
    'id' => 'vector_1',
    'values' => array_fill(0, 128, 0.14),
    'metadata' => [
        'meta1' => 'value1',
    ]
]);

if($response->successful()) {
    // 
}

查询向量

Pinecone 文档

$response = $pinecone->data()->vectors()->query(
    vector: array_fill(0, 128, 0.12),
    topK: 1,
);

if($response->successful()) {
    // 
}

删除向量

Pinecone 文档

$response = $pinecone->data()->vectors()->delete(
    deleteAll: true
);

if($response->successful()) {
    // 
}

检索向量

Pinecone 文档

$response = $pinecone->data()->vectors()->fetch([
    'vector_1', 'vector_2'
]);

if($response->successful()) {
    // 
}

测试

测试通过 PestPHP 完成。您可以通过在项目的根目录中运行 ./vendor/bin/pest 来运行测试。将 .env.example 复制到 .env 并相应更新。

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件

待办事项 - 如果您想贡献,请提交 PR

  • 基于 API 文档验证参数 - 需要更多检查
  • 实现自定义异常
  • 添加失败测试
  • 添加一些示例
  • 完成文档