To streamline your setup, our PHP repository recognizes Pinecone API key and host stored in two default locations: getenv('PINECONE_API') or $_ENV['PINECONE_API'] / getenv('PINECONE_HOST') or $_ENV['PINECONE_HOST']. Simply add your Pinecone key to your ENV file, and no additional configuration is necessary. We also use $_ENV because frameworks like Symfony typically disable getenv by default.
You can add or change both with the PineconeConfig class, so ENV is not mandatory.
The advantage of using Pinecone is that it offers a serverless package where you only pay for what you use. You don't need your own AWS, Google Cloud or Azure for this. This model is highly cost-effective as it eliminates overcapacity and unnecessary expenses.
To start using Pinecone in your projects, you need to integrate the pinecone-php repository. Install this repository using Composer by executing the following command:
composer require probots-io/pinecone-php
Adding Vector addVector
// Vector ClassuseEasyAI\Embeddings\Vector;// Pinecone Vector StoreuseEasyAI\VectorStores\Pinecone\PineconeVectorStore;// OpenAI Embeddinguse EasyAI\Embeddings\EmbeddingGenerator\OpenAI\OpenAI3LargeEmbeddingGenerator; // In this example I am using the OpenAI3LargeEmbeddingGenerator
// Text to embed$text ="I need support for Shopware 6";// Embedding$embeddingGenerator =newOpenAI3LargeEmbeddingGenerator();$embedding = $embeddingGenerator->embedText($text);// Create new vector object$vector =newVector();//$vector->id = "id_84723"; // Additional: If not set hash will be used for id//$vector->namespace = "MyNamespace"; // Additional: If not set, pinecone Default namespace$vector->content = $text; // Add text for meta info in pinecone$vector->embedding = $embedding; // Add vector array to vector class// Save vector in Pinecone$vectorStore =newPineconeVectorStore();$vectorStore->addVector($vector); // void
Deleting Vector deleteVector
// Pinecone Vector StoreuseEasyAI\VectorStores\Pinecone\PineconeVectorStore;// Delete Vector$vector =newVector();$vector->id ="id_84723";//$vector->namespace = "test"; // Additional: If not set default$vectorStore =newPineconeVectorStore();$vectorStore->deleteVector($vector);
Search Vector similaritySearch
// OpenAI EmbeddinguseEasyAI\Embeddings\EmbeddingGenerator\OpenAI\OpenAI3LargeEmbeddingGenerator;// Pinecone StorageuseEasyAI\VectorStores\Pinecone\PineconeVectorStore;$text ="E-Commerce Support";$embeddingGenerator =newOpenAI3LargeEmbeddingGenerator();$embedding = $embeddingGenerator->embedText($text);// SimilaritySearch$vectorStore =newPineconeVectorStore();//$arguments["namespace"] = "MyNamespace"; // Additional: If you want to use a differnt namespace than the default//$arguments["includeMetadata"] = false; // Additional: If want to remove the metas in you result//$arguments["includeValues"] = true; // Additional: If you also want to get the vector$response = $vectorStore->similaritySearch($embedding,10,$arguments);/* The $response will look like this[ { "id": "faq_690_q", "score": 0.372145921, "values": [] }, { "id": "faq_677_q", "score": 0.356256276, "values": [] }, ...]*/