Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions demo/config/packages/ai.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,7 @@ ai:
model: 'text-embedding-ada-002'
indexer:
blog:
loader: 'Symfony\AI\Store\Document\Loader\RssFeedLoader'
source: 'https://feeds.feedburner.com/symfony/blog'
loader: app.loader.blog
filters:
- 'app.filter.week_of_symfony'
transformers:
Expand Down Expand Up @@ -123,3 +122,8 @@ services:
arguments:
$needle: 'Week of Symfony'
$caseSensitive: false

app.loader.blog:
class: 'Symfony\AI\Store\Document\Loader\RssFeedLoader'
arguments:
$defaultSource: 'https://feeds.feedburner.com/symfony/blog'
2 changes: 1 addition & 1 deletion docs/components/store.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ used vector store::

$indexer = new Indexer($platform, $model, $store);
$document = new TextDocument('This is a sample document.');
$indexer->index($document);
$indexer->loadAndIndex($document);

You can find more advanced usage in combination with an Agent using the store for RAG in the examples folder.

Expand Down
4 changes: 2 additions & 2 deletions docs/cookbook/rag-implementation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Use a vectorizer to convert documents into embeddings and store them::
$vectorizer,
$store
);
$indexer->index($documents);
$indexer->loadAndIndex();

The indexer handles:

Expand Down Expand Up @@ -324,7 +324,7 @@ Index documents in batches for better performance::

$batchSize = 100;
foreach (array_chunk($documents, $batchSize) as $batch) {
$indexer->index($batch);
$indexer->loadAndIndex(options: $batch);
}

Caching Embeddings
Expand Down
11 changes: 5 additions & 6 deletions examples/indexer/index-file-loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,17 @@
loader: new TextFileLoader(),
vectorizer: $vectorizer,
store: $store,
source: [
dirname(__DIR__, 2).'/fixtures/movies/gladiator.md',
dirname(__DIR__, 2).'/fixtures/movies/inception.md',
dirname(__DIR__, 2).'/fixtures/movies/jurassic-park.md',
],
transformers: [
new TextReplaceTransformer(search: '## Plot', replace: '## Synopsis'),
new TextSplitTransformer(chunkSize: 500, overlap: 100),
],
);

$indexer->index();
$indexer->loadAndIndex([
dirname(__DIR__, 2).'/fixtures/movies/gladiator.md',
dirname(__DIR__, 2).'/fixtures/movies/inception.md',
dirname(__DIR__, 2).'/fixtures/movies/jurassic-park.md',
]);

$vector = $vectorizer->vectorize('Roman gladiator revenge');
$results = $store->query($vector);
Expand Down
3 changes: 1 addition & 2 deletions examples/indexer/index-inmemory-loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,12 @@
loader: new InMemoryLoader($documents),
vectorizer: $vectorizer,
store: $store,
source: null,
transformers: [
new TextSplitTransformer(chunkSize: 100, overlap: 20),
],
);

$indexer->index();
$indexer->loadAndIndex();

$vector = $vectorizer->vectorize('machine learning artificial intelligence');
$results = $store->query($vector);
Expand Down
9 changes: 4 additions & 5 deletions examples/indexer/index-rss-loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,15 @@
loader: new RssFeedLoader(HttpClient::create()),
vectorizer: $vectorizer,
store: $store,
source: [
'https://feeds.feedburner.com/symfony/blog',
'https://www.tagesschau.de/index~rss2.xml',
],
transformers: [
new TextSplitTransformer(chunkSize: 500, overlap: 100),
],
);

$indexer->index();
$indexer->loadAndIndex([
'https://feeds.feedburner.com/symfony/blog',
'https://www.tagesschau.de/index~rss2.xml',
]);

$vector = $vectorizer->vectorize('Week of Symfony');
$results = $store->query($vector);
Expand Down
3 changes: 1 addition & 2 deletions examples/indexer/index-with-filters.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,13 @@
loader: new InMemoryLoader($documents),
vectorizer: $vectorizer,
store: $store,
source: null,
filters: $filters,
transformers: [
new TextTrimTransformer(),
],
);

$indexer->index();
$indexer->loadAndIndex();

$vector = $vectorizer->vectorize('technology artificial intelligence');
$results = $store->query($vector);
Expand Down
2 changes: 1 addition & 1 deletion examples/memory/mariadb.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, $embeddings = 'text-embedding-3-small');
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$documents, are already set in the Loader. No need to repeat it here.

$indexer->loadAndIndex();

// Execute a chat call that is utilizing the memory
$embeddingsModel = $platform->getModelCatalog()->getModel($embeddings);
Expand Down
11 changes: 5 additions & 6 deletions examples/ollama/indexer.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,17 @@
loader: new TextFileLoader(),
vectorizer: $vectorizer,
store: $store,
source: [
dirname(__DIR__, 2).'/fixtures/movies/gladiator.md',
dirname(__DIR__, 2).'/fixtures/movies/inception.md',
dirname(__DIR__, 2).'/fixtures/movies/jurassic-park.md',
],
transformers: [
new TextReplaceTransformer(search: '## Plot', replace: '## Synopsis'),
new TextSplitTransformer(chunkSize: 500, overlap: 100),
],
);

$indexer->index();
$indexer->loadAndIndex([
dirname(__DIR__, 2).'/fixtures/movies/gladiator.md',
dirname(__DIR__, 2).'/fixtures/movies/inception.md',
dirname(__DIR__, 2).'/fixtures/movies/jurassic-park.md',
]);

$vector = $vectorizer->vectorize('Roman gladiator revenge');
$results = $store->query($vector);
Expand Down
2 changes: 1 addition & 1 deletion examples/ollama/rag.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
$platform = PlatformFactory::create(env('OLLAMA_HOST_URL'), http_client());
$vectorizer = new Vectorizer($platform, env('OLLAMA_EMBEDDINGS'), logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/cache.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/chromadb.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/clickhouse.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/cloudflare.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/in-memory.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/manticore.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/mariadb-gemini.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
$model = 'gemini-embedding-exp-03-07?dimensions=768&task_type=SEMANTIC_SIMILARITY';
$vectorizer = new Vectorizer($platform, $model, logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/mariadb-openai.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/meilisearch-hybrid.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

// Create a query embedding
$queryText = 'futuristic technology and artificial intelligence';
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/meilisearch.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/milvus.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/mongodb.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'));
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

// initialize the index
$store->setup();
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/neo4j.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
$platform = PlatformFactory::create($_SERVER['OPENAI_API_KEY']);
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/pinecone.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/postgres.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/qdrant.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/redis.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/supabase.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ functionName: env('SUPABASE_MATCH_FUNCTION'),
$vectorizer = new Vectorizer($platform, env('OLLAMA_EMBEDDINGS'));
$loader = new InMemoryLoader($documents);
$indexer = new Indexer($loader, $vectorizer, $store, logger: logger());
$indexer->index();
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/surrealdb.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
$platform = PlatformFactory::create($_SERVER['OPENAI_API_KEY']);
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/typesense.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
2 changes: 1 addition & 1 deletion examples/rag/weaviate.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
$platform = PlatformFactory::create(env('OPENAI_API_KEY'), http_client());
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());
$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index($documents);
$indexer->loadAndIndex();

$similaritySearch = new SimilaritySearch($vectorizer, $store);
$toolbox = new Toolbox([$similaritySearch], logger: logger());
Expand Down
11 changes: 5 additions & 6 deletions examples/retriever/basic.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,15 @@
loader: new TextFileLoader(),
vectorizer: $vectorizer,
store: $store,
source: [
dirname(__DIR__, 2).'/fixtures/movies/gladiator.md',
dirname(__DIR__, 2).'/fixtures/movies/inception.md',
dirname(__DIR__, 2).'/fixtures/movies/jurassic-park.md',
],
transformers: [
new TextSplitTransformer(chunkSize: 500, overlap: 100),
],
);
$indexer->index();
$indexer->loadAndIndex([
dirname(__DIR__, 2).'/fixtures/movies/gladiator.md',
dirname(__DIR__, 2).'/fixtures/movies/inception.md',
dirname(__DIR__, 2).'/fixtures/movies/jurassic-park.md',
]);

$retriever = new Retriever(
vectorizer: $vectorizer,
Expand Down
2 changes: 1 addition & 1 deletion examples/retriever/movies.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
$vectorizer = new Vectorizer($platform, 'text-embedding-3-small', logger());

$indexer = new Indexer(new InMemoryLoader($documents), $vectorizer, $store, logger: logger());
$indexer->index();
$indexer->loadAndIndex();

$retriever = new Retriever($vectorizer, $store, logger());

Expand Down
4 changes: 0 additions & 4 deletions src/ai-bundle/config/options.php
Original file line number Diff line number Diff line change
Expand Up @@ -1064,10 +1064,6 @@
->info('Service name of loader')
->isRequired()
->end()
->variableNode('source')
->info('Source identifier (file path, URL, etc.) or array of sources')
->defaultNull()
->end()
->arrayNode('transformers')
->info('Array of transformer service names')
->scalarPrototype()->end()
Expand Down
Loading