This package provides an implementation of multiple vector databases (e.g. Pinecone.io).
If this helped you, consider supporting my development over on Patreon or on Github.
Requires PHP ^8.1
composer require adrianmtanase/laravel-vector-store
- MySql - once it's ready
- Coming from version
0.0.25
you'll have to re-publish the config, as the Pinecone environment variable has been replaced withpinecone_host
php artisan vendor:publish
Using the VectorStore
facade, you can easily access any provider and execute operations.
VectorStore::instance()
->namespace('general')
->upsert(
PineconeUpsertRequest::build()
->id('1')
->values([
-0.002739503,
-0.01970483,
-0.011307885,
-0.011125952,
-0.023119587,
0.0016207852,
-0.003981551,
-0.029249357,
0.00983842,
-0.023721369
])
->metadata([
'text' => 'Vector store is lit!'
])
);
The default provider is Pinecone.io
, this can be easily switched using the facade VectorStore::provider(VectorStoreProviderType::PINECONE)
, or directly in the vector-store
config.
As Weaviate runs through GraphQL, the query language is complex. There are several useful methods in WeaviateQueryRequest
that will help you query data more efficiently. For example:
VectorStore::provider(VectorStoreProviderType::WEAVIATE)
->instance()
->namespace('general')
->query(
WeaviateQueryRequest::build()
->vector([
-0.002739503,
-0.01970483,
-0.011307885,
-0.011125952,
-0.023119587,
0.0016207852,
-0.003981551,
-0.029249357,
0.00983842,
-0.023721369
])
->properties(['text'])
->withId()
->withParameters(WeaviateQueryParameters::build()->group('type: closest, force: 1'))
);
As the system is complex, the package also supports a rawQuery
form, or even getting access to the underlying client.
VectorStore::provider(VectorStoreProviderType::WEAVIATE)
->instance()
->namespace('general')
->rawQuery('
{
Get {
General(nearVector: {
vector: [
-0.002739503,
-0.01970483,
-0.011307885,
-0.011125952,
-0.023119587,
0.0016207852,
-0.003981551,
-0.029249357,
0.00983842,
-0.023721369
]
}) {
text
}
}
}
');
VectorStore::provider(VectorStoreProviderType::WEAVIATE)
->instance()
->client()
->batchDelete('general')