https://github.com/upstash/vector-php
Upstash Vector Database PHP Client, Upsert, Query and Range vectors
https://github.com/upstash/vector-php
ai php sdk sdk-php semantic-search upstash upstash-vector vector vector-database
Last synced: 6 months ago
JSON representation
Upstash Vector Database PHP Client, Upsert, Query and Range vectors
- Host: GitHub
- URL: https://github.com/upstash/vector-php
- Owner: upstash
- License: mit
- Created: 2025-01-02T11:02:17.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2025-04-28T05:25:36.000Z (7 months ago)
- Last Synced: 2025-04-30T22:16:51.207Z (6 months ago)
- Topics: ai, php, sdk, sdk-php, semantic-search, upstash, upstash-vector, vector, vector-database
- Language: PHP
- Homepage: https://upstash.com/docs/vector/overall/getstarted
- Size: 184 KB
- Stars: 6
- Watchers: 7
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Vector Client SDK for PHP
[](https://packagist.org/packages/upstash/vector)
[](https://github.com/upstash/vector-php/actions/workflows/run-tests.yml)
[](https://packagist.org/packages/upstash/vector)
Upstash Vector is an HTTP serverless Vector Database.
You can store, query, and retrieve vectors from your application, use it to power your search, and more.
You can read more about Upstash Vector [here](https://docs.upstash.com/vector).
## Quick Start
### Installation
You can install the package via composer:
```bash
composer require upstash/vector
```
### Create Index
Create a new index on [Upstash](https://console.upstash.com/vector)
## Usage
### Initialize the index
```php
use Upstash\Vector\Index;
// Initialize the index
$index = new Index(
url: 'UPSTASH_VECTOR_REST_URL',
token: 'UPSTASH_VECTOR_REST_TOKEN',
);
// or just to use the environment variables
$index = Index::fromEnv();
```
### Upserting Vectors
```php
use Upstash\Vector\Index;
use Upstash\Vector\VectorUpsert;
use function Upstash\Vector\createRandomVector;
$index = new Index(
url: 'UPSTASH_VECTOR_REST_URL',
token: 'UPSTASH_VECTOR_REST_TOKEN',
);
$index->upsert(new VectorUpsert(
id: 'upstash-rocks',
vector: createRandomVector(dimensions: 1536),
metadata: ['field' => 'value'],
));
```
### Upserting Data with Embedding Models
```php
use Upstash\Vector\Index;
use Upstash\Vector\DataUpsert;
$index = new Index(
url: 'UPSTASH_VECTOR_REST_URL',
token: 'UPSTASH_VECTOR_REST_TOKEN',
);
$index->upsertData(new DataUpsert(
id: 'upstash-vector',
data: 'Upstash Vector is a serverless vector database.',
metadata: ['field' => 'value'],
));
```
### Querying Vectors
```php
use Upstash\Vector\Index;
use Upstash\Vector\VectorQuery;
use function Upstash\Vector\createRandomVector;
$index = new Index(
url: 'UPSTASH_VECTOR_REST_URL',
token: 'UPSTASH_VECTOR_REST_TOKEN',
);
$index->query(new VectorQuery(
vector: createRandomVector(dimensions: 1536),
topK: 5,
));
```
### Querying Data with Embedding Models
```php
use Upstash\Vector\Index;
use Upstash\Vector\DataQuery;
$index = new Index(
url: 'UPSTASH_VECTOR_REST_URL',
token: 'UPSTASH_VECTOR_REST_TOKEN',
);
$index->queryData(new DataQuery(
data: 'What is Upstash Vector?',
topK: 5,
));
```
### Fetch specific vectors
```php
use Upstash\Vector\Index;
use Upstash\Vector\VectorFetch;
$index = new Index(
url: 'UPSTASH_VECTOR_REST_URL',
token: 'UPSTASH_VECTOR_REST_TOKEN',
);
$index->fetch(new VectorFetch(ids: ['upstash-rocks']));
```
### Delete specific vectors
```php
use Upstash\Vector\Index;
$index = new Index(
url: 'UPSTASH_VECTOR_REST_URL',
token: 'UPSTASH_VECTOR_REST_TOKEN',
);
$index->delete(['upstash-rocks']);
```
## Namespaces
Upstash Vector allows you to partition a single index into multiple isolated namespaces. Each namespace functions as a self-contained subset of the index, in which read and write requests are only limited to one namespace. To learn more about it, [see Namespaces](https://upstash.com/docs/vector/features/namespaces).
### Example
```php
use Upstash\Vector\Index;
use Upstash\Vector\VectorUpsert;
use function Upstash\Vector\createRandomVector;
$index = new Index(
url: 'UPSTASH_VECTOR_REST_URL',
token: 'UPSTASH_VECTOR_REST_TOKEN',
);
// Upsert to namespace
$index->namespace('books')->upsert(new VectorUpsert(
id: 'upstash-rocks',
vector: createRandomVector(dimensions: 1536),
metadata: ['field' => 'value'],
));
```
## Troubleshooting
We have a [Discord](upstash.com/discord) for common problems. If you can't find a solution, please [open an issue](https://github.com/upstash/vector-js/issues/new).
## Testing
```bash
composer test
```
## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.