mirror of
https://github.com/symfony/recipes.git
synced 2026-03-23 23:32:10 +01:00
Add symfony/ai-*-store recipes (#1503)
* Add recipes for Symfony AI store bridges (0.1) Add 21 store bridge recipes that append configuration to ai.yaml under the ai.store key using add-lines directive. Stores: Azure Search, Cache, ChromaDB, ClickHouse, Cloudflare, Elasticsearch, ManticoreSearch, MariaDB, Meilisearch, Milvus, MongoDB, Neo4j, OpenSearch, Pinecone, Postgres, Qdrant, Redis, Supabase, SurrealDB, Typesense, Weaviate * Remove optional fields from AI store recipes Only set required connection parameters, let users configure optional fields like vector_field, dimensions, etc. * Simplify AI store recipes to only required fields Remove fields that have defaults (table, collection, index_name, etc. default to the store name like 'default'). * Use separate YAML config files for AI store recipes Switch from add-lines to copy-from-recipe with dedicated config/packages/ai.yaml files for each store. * Rename store YAML files to unique names Use ai_<store>_store.yaml instead of ai.yaml to avoid conflicts when multiple stores are installed.
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
ai:
|
||||
store:
|
||||
azuresearch:
|
||||
default:
|
||||
endpoint: '%env(AZURE_SEARCH_ENDPOINT)%'
|
||||
api_key: '%env(AZURE_SEARCH_API_KEY)%'
|
||||
api_version: '2024-07-01'
|
||||
9
symfony/ai-azure-search-store/0.1/manifest.json
Normal file
9
symfony/ai-azure-search-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "AZURE_SEARCH_ENDPOINT=",
|
||||
"#2": "AZURE_SEARCH_API_KEY="
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
ai:
|
||||
store:
|
||||
cache:
|
||||
default:
|
||||
service: 'cache.app'
|
||||
5
symfony/ai-cache-store/0.1/manifest.json
Normal file
5
symfony/ai-cache-store/0.1/manifest.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
ai:
|
||||
store:
|
||||
chromadb:
|
||||
default:
|
||||
collection: 'my_collection'
|
||||
5
symfony/ai-chroma-db-store/0.1/manifest.json
Normal file
5
symfony/ai-chroma-db-store/0.1/manifest.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
clickhouse:
|
||||
default:
|
||||
dsn: '%env(CLICKHOUSE_DSN)%'
|
||||
database: 'default'
|
||||
8
symfony/ai-click-house-store/0.1/manifest.json
Normal file
8
symfony/ai-click-house-store/0.1/manifest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "CLICKHOUSE_DSN="
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
cloudflare:
|
||||
default:
|
||||
account_id: '%env(CLOUDFLARE_ACCOUNT_ID)%'
|
||||
api_key: '%env(CLOUDFLARE_API_KEY)%'
|
||||
9
symfony/ai-cloudflare-store/0.1/manifest.json
Normal file
9
symfony/ai-cloudflare-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "CLOUDFLARE_ACCOUNT_ID=",
|
||||
"#2": "CLOUDFLARE_API_KEY="
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
elasticsearch:
|
||||
default:
|
||||
hosts:
|
||||
- '%env(ELASTICSEARCH_HOST)%'
|
||||
8
symfony/ai-elasticsearch-store/0.1/manifest.json
Normal file
8
symfony/ai-elasticsearch-store/0.1/manifest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "ELASTICSEARCH_HOST=http://localhost:9200"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
manticoresearch:
|
||||
default:
|
||||
host: '%env(MANTICORESEARCH_HOST)%'
|
||||
port: '%env(int:MANTICORESEARCH_PORT)%'
|
||||
9
symfony/ai-manticore-search-store/0.1/manifest.json
Normal file
9
symfony/ai-manticore-search-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "MANTICORESEARCH_HOST=localhost",
|
||||
"#2": "MANTICORESEARCH_PORT=9308"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
ai:
|
||||
store:
|
||||
mariadb:
|
||||
default:
|
||||
connection: 'default'
|
||||
5
symfony/ai-maria-db-store/0.1/manifest.json
Normal file
5
symfony/ai-maria-db-store/0.1/manifest.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
meilisearch:
|
||||
default:
|
||||
host: '%env(MEILISEARCH_HOST)%'
|
||||
api_key: '%env(MEILISEARCH_API_KEY)%'
|
||||
9
symfony/ai-meilisearch-store/0.1/manifest.json
Normal file
9
symfony/ai-meilisearch-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "MEILISEARCH_HOST=http://localhost:7700",
|
||||
"#2": "MEILISEARCH_API_KEY="
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
milvus:
|
||||
default:
|
||||
host: '%env(MILVUS_HOST)%'
|
||||
port: '%env(int:MILVUS_PORT)%'
|
||||
9
symfony/ai-milvus-store/0.1/manifest.json
Normal file
9
symfony/ai-milvus-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "MILVUS_HOST=localhost",
|
||||
"#2": "MILVUS_PORT=19530"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
ai:
|
||||
store:
|
||||
mongodb:
|
||||
default:
|
||||
uri: '%env(MONGODB_URI)%'
|
||||
database: 'my_database'
|
||||
index_name: 'vector_index'
|
||||
8
symfony/ai-mongo-db-store/0.1/manifest.json
Normal file
8
symfony/ai-mongo-db-store/0.1/manifest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "MONGODB_URI=mongodb://localhost:27017"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
ai:
|
||||
store:
|
||||
neo4j:
|
||||
default:
|
||||
uri: '%env(NEO4J_URI)%'
|
||||
username: '%env(NEO4J_USERNAME)%'
|
||||
password: '%env(NEO4J_PASSWORD)%'
|
||||
10
symfony/ai-neo4j-store/0.1/manifest.json
Normal file
10
symfony/ai-neo4j-store/0.1/manifest.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "NEO4J_URI=bolt://localhost:7687",
|
||||
"#2": "NEO4J_USERNAME=neo4j",
|
||||
"#3": "NEO4J_PASSWORD="
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
opensearch:
|
||||
default:
|
||||
hosts:
|
||||
- '%env(OPENSEARCH_HOST)%'
|
||||
8
symfony/ai-open-search-store/0.1/manifest.json
Normal file
8
symfony/ai-open-search-store/0.1/manifest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "OPENSEARCH_HOST=http://localhost:9200"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
pinecone:
|
||||
default:
|
||||
api_key: '%env(PINECONE_API_KEY)%'
|
||||
index_host: '%env(PINECONE_INDEX_HOST)%'
|
||||
9
symfony/ai-pinecone-store/0.1/manifest.json
Normal file
9
symfony/ai-pinecone-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "PINECONE_API_KEY=",
|
||||
"#2": "PINECONE_INDEX_HOST="
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
ai:
|
||||
store:
|
||||
postgres:
|
||||
default:
|
||||
connection: 'default'
|
||||
5
symfony/ai-postgres-store/0.1/manifest.json
Normal file
5
symfony/ai-postgres-store/0.1/manifest.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
qdrant:
|
||||
default:
|
||||
host: '%env(QDRANT_HOST)%'
|
||||
port: '%env(int:QDRANT_PORT)%'
|
||||
9
symfony/ai-qdrant-store/0.1/manifest.json
Normal file
9
symfony/ai-qdrant-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "QDRANT_HOST=localhost",
|
||||
"#2": "QDRANT_PORT=6333"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
ai:
|
||||
store:
|
||||
redis:
|
||||
default:
|
||||
dsn: '%env(REDIS_DSN)%'
|
||||
8
symfony/ai-redis-store/0.1/manifest.json
Normal file
8
symfony/ai-redis-store/0.1/manifest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "REDIS_DSN=redis://localhost:6379"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
supabase:
|
||||
default:
|
||||
url: '%env(SUPABASE_URL)%'
|
||||
api_key: '%env(SUPABASE_API_KEY)%'
|
||||
9
symfony/ai-supabase-store/0.1/manifest.json
Normal file
9
symfony/ai-supabase-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "SUPABASE_URL=",
|
||||
"#2": "SUPABASE_API_KEY="
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
ai:
|
||||
store:
|
||||
surrealdb:
|
||||
default:
|
||||
dsn: '%env(SURREALDB_DSN)%'
|
||||
namespace: 'default'
|
||||
database: 'default'
|
||||
8
symfony/ai-surreal-db-store/0.1/manifest.json
Normal file
8
symfony/ai-surreal-db-store/0.1/manifest.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "SURREALDB_DSN=http://localhost:8000"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
ai:
|
||||
store:
|
||||
typesense:
|
||||
default:
|
||||
host: '%env(TYPESENSE_HOST)%'
|
||||
port: '%env(int:TYPESENSE_PORT)%'
|
||||
api_key: '%env(TYPESENSE_API_KEY)%'
|
||||
10
symfony/ai-typesense-store/0.1/manifest.json
Normal file
10
symfony/ai-typesense-store/0.1/manifest.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "TYPESENSE_HOST=localhost",
|
||||
"#2": "TYPESENSE_PORT=8108",
|
||||
"#3": "TYPESENSE_API_KEY="
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
ai:
|
||||
store:
|
||||
weaviate:
|
||||
default:
|
||||
host: '%env(WEAVIATE_HOST)%'
|
||||
api_key: '%env(WEAVIATE_API_KEY)%'
|
||||
9
symfony/ai-weaviate-store/0.1/manifest.json
Normal file
9
symfony/ai-weaviate-store/0.1/manifest.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"env": {
|
||||
"#1": "WEAVIATE_HOST=http://localhost:8080",
|
||||
"#2": "WEAVIATE_API_KEY="
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user