HelpLogin
© 2022-2025 Spice AI, Inc.
SQL Query ReferenceDocsFAQSupport
PrivacyTerms
Status
Home
Datasets
Models
trunk
Edit on GitHub
Fork
/docs/website/src/pages/cookbook/_ignored.tsx
1import React from 'react'
2import { Title } from '@site/src/components/atoms/title/title'
3import { Paragraph } from '@site/src/components/atoms/paragraph/paragraph'
4import { Container } from '@site/src/components/atoms/container/container'
5import { Recipe } from '@site/src/components/molecules/recipe/recipe'
6import { Link } from '@site/src/components/atoms/link/link'
7import { Icon } from '@site/src/components/atoms/icon/icon'
8
9interface RecipeData {
10 title: string
11 description: string
12 path: string
13 tags: string[]
14 videoUrl?: string
15}
16
17const recipeBaseUrl = 'https://github.com/spiceai/cookbook/blob/trunk'
18
19const recipes: RecipeData[] = [
20 // Core scenarios
21 {
22 title: 'Federated SQL Query',
23 description: 'Query data from S3, PostgreSQL, and Dremio in a single query.',
24 path: '/federation/README.md',
25 tags: ['core', 'federation', 'sql']
26 },
27 // Sample Applications and guides
28 {
29 title: 'Command Query Responsibility Segregation (CQRS)',
30 description: 'Sample application implementing the CQRS pattern with Spice.',
31 path: '/cqrs/README.md',
32 tags: ['sample', 'cqrs', 'application']
33 },
34 {
35 title: 'Intelligent Security Copilot',
36 description: 'Analyze real-time data access patterns with Spice.ai.',
37 path: '/guides/security-analyzer/README.md',
38 tags: ['guide', 'security', 'analyzer']
39 },
40 // Models & AI
41 {
42 title: 'Azure OpenAI Models',
43 description: 'Connect and use Azure OpenAI models with Spice.',
44 path: '/azure_openai/README.md',
45 tags: ['ai', 'openai', 'azure']
46 },
47 {
48 title: 'Running Llama3 Locally',
49 description: 'Use the Llama family of models locally from HuggingFace using Spice.',
50 path: '/llama/README.md',
51 tags: ['ai', 'llama', 'huggingface'],
52 videoUrl: 'https://youtu.be/I2i6uZKBbd4'
53 },
54 {
55 title: 'OpenAI SDK',
56 description: 'Use the OpenAI SDK to connect to models hosted on Spice.',
57 path: '/openai_sdk/README.md',
58 tags: ['ai', 'openai', 'sdk', 'core']
59 },
60 {
61 title: 'LLM Memory',
62 description: 'Persistent memory for language models.',
63 path: '/llm-memory/README.md',
64 tags: ['ai', 'llm', 'memory'],
65 videoUrl: 'https://youtu.be/uc8TCAPu1IM'
66 },
67 {
68 title: 'Text to SQL (NSQL)',
69 description:
70 'Ask natural language (NLP) questions of your datasets using the built-in text-to-SQL tool.',
71 path: '/text-to-sql/README.md',
72 tags: ['ai', 'text-to-sql', 'nsql', 'tools']
73 },
74 {
75 title: 'Nvidia NIM',
76 description: 'Deploy Nvidia NIM infrastructure, on Kubernetes, with GPUs connected to Spice.',
77 path: '/nvidia-nim/README.md',
78 tags: ['ai', 'nvidia', 'nim']
79 },
80 {
81 title: 'Searching GitHub Files',
82 description: 'Search GitHub files with embeddings and vector similarity search.',
83 path: '/search_github_files/README.md',
84 tags: ['ai', 'github', 'search'],
85 videoUrl: 'https://youtu.be/5y26MveEJ8c'
86 },
87 {
88 title: 'xAI Models',
89 description: 'Use xAI models such as Grok.',
90 path: '/models/xai/README.md',
91 tags: ['ai', 'xai', 'models'],
92 videoUrl: 'https://youtu.be/-7RkAsqQLdk'
93 },
94 {
95 title: 'DeepSeek Model',
96 description: 'Use DeepSeek model through Spice.',
97 path: '/deepseek/README.md',
98 tags: ['ai', 'deepseek', 'models']
99 },
100 {
101 title: 'Model-Context-Protocol (MCP)',
102 description: 'Use Spice to connect to or host MCP servers.',
103 path: '/mcp/README.md',
104 tags: ['ai', 'mcp', 'tools']
105 },
106 // Data Acceleration
107 {
108 title: 'DuckDB Data Accelerator',
109 description: 'Accelerate data locally using DuckDB.',
110 path: '/duckdb/accelerator/README.md',
111 tags: ['core', 'acceleration', 'duckdb', 'data'],
112 videoUrl: 'https://youtu.be/hFvVz5NGpaw'
113 },
114 {
115 title: 'PostgreSQL Data Accelerator',
116 description: 'Accelerate data locally using PostgreSQL.',
117 path: '/postgres/accelerator/README.md',
118 tags: ['acceleration', 'postgresql', 'data']
119 },
120 {
121 title: 'SQLite Data Accelerator',
122 description: 'Accelerate data locally using SQLite.',
123 path: '/sqlite/accelerator/README.md',
124 tags: ['acceleration', 'sqlite', 'data']
125 },
126 {
127 title: 'Apache Arrow Data Accelerator',
128 description: 'Accelerate data using Apache Arrow.',
129 path: '/arrow/README.md',
130 tags: ['acceleration', 'apache', 'arrow']
131 },
132 {
133 title: 'Accelerated Views',
134 description: 'Use view materialization for improved performance.',
135 path: '/views/README.md',
136 tags: ['acceleration', 'views']
137 },
138 // Data Connectors
139 {
140 title: 'PostgreSQL Connector',
141 description: 'Connect to and query PostgreSQL databases.',
142 path: '/postgres/connector/README.md',
143 tags: ['connector', 'postgresql', 'query']
144 },
145 {
146 title: 'AWS RDS PostgreSQL',
147 description: 'Connect to AWS RDS PostgreSQL instances.',
148 path: '/postgres/rds/README.md',
149 tags: ['connector', 'aws', 'rds', 'postgresql']
150 },
151 {
152 title: 'Supabase PostgreSQL',
153 description: 'Connect to Supabase PostgreSQL databases.',
154 path: '/postgres/supabase/README.md',
155 tags: ['connector', 'supabase', 'postgresql']
156 },
157 {
158 title: 'MySQL Connector',
159 description: 'Connect to and query MySQL databases.',
160 path: '/mysql/connector/README.md',
161 tags: ['connector', 'mysql', 'query']
162 },
163 {
164 title: 'AWS RDS Aurora MySQL',
165 description: 'Connect to AWS RDS Aurora with MySQL compatibility.',
166 path: '/mysql/rds-aurora/README.md',
167 tags: ['connector', 'aws', 'rds', 'aurora', 'mysql']
168 },
169 {
170 title: 'PlanetScale MySQL',
171 description: 'Connect to PlanetScale MySQL databases.',
172 path: '/mysql/planetscale/README.md',
173 tags: ['connector', 'planetscale', 'mysql']
174 },
175 {
176 title: 'Clickhouse Connector',
177 description: 'Connect to and query Clickhouse databases.',
178 path: '/clickhouse/README.md',
179 tags: ['connector', 'clickhouse', 'query']
180 },
181 {
182 title: 'Databricks Connector',
183 description: 'Connect to and query Databricks instances using Delta Lake or Spark Connect.',
184 path: '/databricks/README.md',
185 tags: ['connector', 'databricks', 'delta', 'lake', 'spark', 'connect']
186 },
187 {
188 title: 'Delta Lake Connector',
189 description: 'Query data from Delta Lake tables.',
190 path: '/delta-lake/README.md',
191 tags: ['connector', 'delta', 'lake']
192 },
193 {
194 title: 'Debezium CDC from Postgres',
195 description: 'Stream changes from PostgreSQL using Debezium CDC.',
196 path: '/cdc-debezium/README.md',
197 tags: ['connector', 'debezium', 'cdc', 'postgresql']
198 },
199 {
200 title: 'Debezium CDC with SASL/SCRAM',
201 description: 'Stream MySQL changes using Debezium with SASL/SCRAM authentication.',
202 path: '/cdc-debezium/sasl-scram/README.md',
203 tags: ['connector', 'debezium', 'cdc', 'sasl', 'scram', 'mysql']
204 },
205 {
206 title: 'Dremio Connector',
207 description: 'Connect to and query Dremio.',
208 path: '/dremio/README.md',
209 tags: ['connector', 'dremio', 'query']
210 },
211 {
212 title: 'DuckDB Connector',
213 description: 'Query DuckDB databases with sample TPCH data.',
214 path: '/duckdb/connector/README.md',
215 tags: ['connector', 'duckdb', 'query']
216 },
217 {
218 title: 'File Connector',
219 description: 'Query data from local files.',
220 path: '/file/README.md',
221 tags: ['connector', 'file', 'query']
222 },
223 {
224 title: 'FTP Connector',
225 description: 'Query data from FTP servers.',
226 path: '/ftp/README.md',
227 tags: ['connector', 'ftp', 'query']
228 },
229 {
230 title: 'GitHub Connector',
231 description: 'Connect to and query GitHub data.',
232 path: '/github/README.md',
233 tags: ['connector', 'github', 'query']
234 },
235 {
236 title: 'GraphQL Connector',
237 description: 'Query data from GraphQL endpoints.',
238 path: '/graphql/README.md',
239 tags: ['connector', 'graphql', 'query']
240 },
241 {
242 title: 'MSSQL Connector',
243 description: 'Connect to Microsoft SQL Server databases.',
244 path: '/mssql/README.md',
245 tags: ['connector', 'mssql', 'query']
246 },
247 {
248 title: 'ODBC Connector',
249 description: 'Connect to databases using ODBC.',
250 path: '/odbc/README.md',
251 tags: ['connector', 'odbc', 'query']
252 },
253 {
254 title: 'S3 Connector',
255 description: 'Query data from S3 compatible storage.',
256 path: '/s3/README.md',
257 tags: ['connector', 's3', 'query']
258 },
259 {
260 title: 'SharePoint Connector',
261 description: 'Connect to SharePoint and OneDrive for Business.',
262 path: '/sharepoint/README.md',
263 tags: ['connector', 'sharepoint', 'onedrive']
264 },
265 {
266 title: 'Snowflake Connector',
267 description: 'Connect to and query Snowflake databases.',
268 path: '/snowflake/README.md',
269 tags: ['connector', 'snowflake', 'query']
270 },
271 {
272 title: 'Spice.ai Cloud Connector',
273 description: 'Connect to the Spice.ai Cloud Platform.',
274 path: '/spiceai/README.md',
275 tags: ['connector', 'spiceai', 'cloud']
276 },
277 {
278 title: 'Apache Spark Connector',
279 description: 'Connect to and query Apache Spark.',
280 path: '/spark/README.md',
281 tags: ['connector', 'apache', 'spark', 'query']
282 },
283 {
284 title: 'Spice.ai Cloud Platform Catalog',
285 description: 'Connect to the Spice.ai Cloud Platform catalog.',
286 path: '/catalogs/spiceai/README.md',
287 tags: ['catalog', 'spiceai', 'cloud']
288 },
289 {
290 title: 'Databricks Unity Catalog',
291 description: 'Connect to Databricks Unity catalog.',
292 path: '/catalogs/databricks/README.md',
293 tags: ['catalog', 'databricks', 'unity']
294 },
295 {
296 title: 'Unity Catalog',
297 description: 'Connect to Unity catalog.',
298 path: '/catalogs/unity_catalog/README.md',
299 tags: ['catalog', 'unity']
300 },
301 {
302 title: 'Iceberg Catalog',
303 description: 'Connect to Iceberg catalog.',
304 path: '/catalogs/iceberg/README.md',
305 tags: ['catalog', 'iceberg']
306 },
307 {
308 title: 'Sales BI with Apache Superset',
309 description: 'Visualize data in Spice with Apache Superset.',
310 path: '/sales-bi/README.md',
311 tags: ['visualization', 'bi', 'superset']
312 },
313 {
314 title: 'Grafana Datasource',
315 description: 'Add Spice as a Grafana datasource.',
316 path: '/grafana-datasource/README.md',
317 tags: ['visualization', 'grafana', 'datasource']
318 },
319 {
320 title: 'IMAP Emails',
321 description: 'Federated SQL query of mail across IMAP email servers',
322 path: '/imap/README.md',
323 tags: ['connector', 'imap', 'datasource']
324 },
325 // Deployment
326 {
327 title: 'Deploying to Kubernetes',
328 description: 'Deploy Spice.ai on Kubernetes.',
329 path: '/kubernetes/README.md',
330 tags: ['deployment', 'kubernetes']
331 },
332 {
333 title: 'Running in Docker',
334 description: 'Run Spice.ai in Docker containers.',
335 path: '/docker/README.md',
336 tags: ['deployment', 'docker']
337 },
338
339 // Performance
340 {
341 title: 'TPC-H Benchmarking',
342 description: 'Benchmark performance using TPC-H.',
343 path: '/tpc-h/README.md',
344 tags: ['performance', 'benchmarking', 'tpc-h']
345 },
346 {
347 title: 'Results Caching',
348 description: 'Cache query results for improved performance.',
349 path: '/caching/README.md',
350 tags: ['performance', 'caching']
351 },
352 {
353 title: 'Indexes on Accelerated Data',
354 description: 'Create and manage indexes on accelerated data.',
355 path: '/acceleration/indexes/README.md',
356 tags: ['performance', 'indexes', 'acceleration']
357 },
358
359 // Configuration
360 {
361 title: 'Data Retention Policy',
362 description: 'Configure data retention policies.',
363 path: '/retention/README.md',
364 tags: ['configuration', 'retention']
365 },
366 {
367 title: 'Refresh Data Window',
368 description: 'Configure data refresh windows.',
369 path: '/refresh-data-window/README.md',
370 tags: ['configuration', 'refresh']
371 },
372 {
373 title: 'Advanced Data Refresh',
374 description: 'Advanced configuration for data refresh.',
375 path: '/acceleration/data-refresh/README.md',
376 tags: ['configuration', 'data', 'refresh']
377 },
378 {
379 title: 'Data Quality with Constraints',
380 description: 'Add data quality constraints.',
381 path: '/acceleration/constraints/README.md',
382 tags: ['configuration', 'data', 'quality', 'constraints']
383 },
384
385 // Client SDKs
386 {
387 title: 'Rust SDK',
388 description: 'Query Spice.ai using the Rust SDK.',
389 path: '/client-sdk/spice-rs-sdk-sample/README.md',
390 tags: ['sdk', 'rust']
391 },
392 {
393 title: 'Python SDK',
394 description: 'Query Spice.ai using the Python SDK.',
395 path: '/client-sdk/spicepy-sdk-sample/README.md',
396 tags: ['sdk', 'python']
397 },
398 {
399 title: 'Go SDK',
400 description: 'Query Spice.ai using the Go SDK.',
401 path: '/client-sdk/gospice-sdk-sample/README.md',
402 tags: ['sdk', 'go']
403 },
404 {
405 title: 'JavaScript SDK',
406 description: 'Query Spice.ai using the JavaScript SDK.',
407 path: '/client-sdk/spice.js-sdk-sample/README.md',
408 tags: ['sdk', 'javascript']
409 },
410 {
411 title: 'Java SDK',
412 description: 'Query Spice.ai using the Java SDK.',
413 path: '/client-sdk/spice-java-sdk-sample/README.md',
414 tags: ['sdk', 'java']
415 },
416 // Clients
417 {
418 title: 'Python ADBC Client',
419 description: 'Query Spice using ADBC and Parameterized Queries with Python.',
420 path: '/clients/adbc/README.md',
421 tags: ['client', 'python', 'adbc', 'parameterized queries']
422 },
423 // Security
424 {
425 title: 'TLS Encryption',
426 description: 'Enable encryption in transit using TLS.',
427 path: '/tls/README.md',
428 tags: ['security', 'tls']
429 },
430 {
431 title: 'API Key Authentication',
432 description: 'Secure access with API key authentication.',
433 path: '/api_key/README.md',
434 tags: ['security', 'api', 'key']
435 },
436
437 // Advanced
438 {
439 title: 'Local Dataset Replication',
440 description: 'Link datasets in a parent/child relationship within the current Spicepod.',
441 path: '/localpod/README.md',
442 tags: ['advanced', 'replication', 'dataset']
443 }
444]
445
446const RecipeGroup: React.FC<{ recipes: RecipeData[] }> = ({ recipes }) => {
447 const getGridClass = (count: number) => {
448 if (count === 1) return 'grid-cols-1 max-w-sm mx-auto'
449 if (count === 2) return 'grid-cols-1 sm:grid-cols-2 max-w-2xl mx-auto'
450 if (count === 3) return 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 max-w-4xl mx-auto'
451 return 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4'
452 }
453
454 return (
455 <section className='mx-auto px-6 md:max-w-[1020px] md:px-0'>
456 <div className={`grid gap-4 ${getGridClass(recipes.length)}`}>
457 {recipes.map((recipe, index) => (
458 <div key={index} className='h-full'>
459 <Recipe
460 title={recipe.title}
461 description={recipe.description}
462 href={recipeBaseUrl + recipe.path}
463 videoUrl={recipe.videoUrl}
464 className='h-full px-4 py-4 text-xs gap-4 md:gap-8 md:px-8 md:py-8'
465 />
466 </div>
467 ))}
468 </div>
469 </section>
470 )
471}
472
473export function CookbookPage() {
474 const filterByTag = (...tags: string[]) =>
475 recipes.filter((r) => r.tags.some((t) => tags.includes(t)))
476
477 const description = `${recipes.length} guides and samples to help you build data-grounded AI apps and agents with Spice.ai Open-Source. Find ready-to-use examples for data acceleration, AI agents, LLM memory, and more.`
478
479 return (
480 <div className='tailwind font-sans'>
481 <Title as='h1' variant='large' className='mx-auto mb-7 mt-8 md:text-center xl:max-w-[1020px]'>
482 🧑‍🍳 Spice.ai OSS <span className='text-primary'>Cookbook</span>
483 </Title>
484
485 <Paragraph className='mb-6 md:text-center mx-auto px-6 md:max-w-[843px]'>
486 {description}
487 </Paragraph>
488
489 <Paragraph className='mb-6 md:text-center mx-auto px-6 md:max-w-[843px] hover:underline'>
490 <Link
491 className='inline-flex gap-1.5'
492 target='_blank'
493 href='https://github.com/spiceai/cookbook/blob/trunk/README.md'
494 >
495 <Icon iconName='github' /> Contribute to the Cookbook on GitHub!
496 </Link>
497 </Paragraph>
498
499 <Container className='mt-6 mb-20'>
500 <Title className='mb-14 text-center'>Featured Recipes</Title>
501
502 <section className='mx-auto px-6 md:max-w-[843px] md:px-0'>
503 <div className='flex flex-col gap-6 md:flex-row'>
504 <div className='flex w-full flex-col gap-6 md:w-1/2'>
505 <Recipe
506 title='Federated SQL Query'
507 description='Join S3, PostgreSQL, and Dremio data in one SQL query.'
508 href={`${recipeBaseUrl}/federation/README.md`}
509 />
510 <Recipe
511 title='Run Llama3 Locally'
512 description='Use Llama models from HuggingFace with Spice.'
513 href={`${recipeBaseUrl}/llama/README.md`}
514 videoUrl='https://youtu.be/I2i6uZKBbd4'
515 />
516 </div>
517 <div className='flex w-full flex-col gap-6 md:w-1/2 md:pt-20'>
518 <Recipe
519 title='Data Acceleration with DuckDB'
520 description='Speed up queries using DuckDB.'
521 href={`${recipeBaseUrl}/duckdb/accelerator/README.md`}
522 videoUrl='https://youtu.be/hFvVz5NGpaw'
523 />
524 <Recipe
525 title='LLM Memory'
526 description='Persistent memory for language models'
527 href={`${recipeBaseUrl}/llm-memory/README.md`}
528 videoUrl='https://youtu.be/uc8TCAPu1IM'
529 />
530 </div>
531 </div>
532 </section>
533 </Container>
534
535 <Container className='mt-6 mb-20'>
536 <Title className='mb-4 text-center'>Sample Applications and Guides</Title>
537 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
538 Example apps and guides for real-world Spice.ai usage and best practices.
539 </Paragraph>
540
541 <RecipeGroup recipes={filterByTag('sample')} />
542 </Container>
543
544 <Container className='mt-6 mb-20'>
545 <Title className='mb-4 text-center'>Core Features</Title>
546 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
547 Discover core capabilities like data federation, acceleration, search, and LLM inference
548 to enhance your applications.
549 </Paragraph>
550
551 <RecipeGroup recipes={filterByTag('core')} />
552 </Container>
553
554 <Container className='mt-6 mb-20'>
555 <Title className='mb-4 text-center'>Models, AI, and Agents</Title>
556 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
557 Integrate with popular AI models, LLMs, and build intelligent agents using Spice.ai.
558 </Paragraph>
559
560 <RecipeGroup recipes={filterByTag('ai')} />
561 </Container>
562
563 <Container className='mt-6 mb-20'>
564 <Title className='mb-4 text-center'>
565 Data Acceleration, Materialization, and Federation
566 </Title>
567 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
568 Optimize query performance with local acceleration, data materialization, and federation
569 techniques.
570 </Paragraph>
571
572 <RecipeGroup recipes={filterByTag('acceleration')} />
573 </Container>
574
575 <Container className='mt-6 mb-20'>
576 <Title className='mb-4 text-center'>Search & Embeddings</Title>
577 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
578 Implement advanced search capabilities and leverage embeddings for vector similarity
579 search.
580 </Paragraph>
581
582 <RecipeGroup recipes={filterByTag('search')} />
583 </Container>
584
585 <Container className='mt-6 mb-20'>
586 <Title className='mb-4 text-center'>Data Connectors</Title>
587 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
588 Connect to various data sources and systems to query, analyze, and manage your data
589 efficiently.
590 </Paragraph>
591
592 <RecipeGroup recipes={filterByTag('connector')} />
593 </Container>
594
595 <Container className='mt-6 mb-20'>
596 <Title className='mb-4 text-center'>Catalog Connectors</Title>
597 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
598 Connect to data catalogs to discover, manage, and utilize your data assets effectively.
599 </Paragraph>
600
601 <RecipeGroup recipes={filterByTag('catalog')} />
602 </Container>
603
604 <Container className='mt-6 mb-20'>
605 <Title className='mb-4 text-center'>Visualization</Title>
606 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
607 Visualize data with BI and analytics tools.
608 </Paragraph>
609
610 <RecipeGroup recipes={filterByTag('visualization')} />
611 </Container>
612
613 <Container className='mt-6 mb-20'>
614 <Title className='mb-4 text-center'>API Clients</Title>
615 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
616 Use API clients for data access and integration.
617 </Paragraph>
618
619 <RecipeGroup recipes={filterByTag('client')} />
620 </Container>
621
622 <Container className='mt-6 mb-20'>
623 <Title className='mb-4 text-center'>Deployment</Title>
624 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
625 Deploy Spice.ai in different environments.
626 </Paragraph>
627
628 <RecipeGroup recipes={filterByTag('deployment')} />
629 </Container>
630
631 <Container className='mt-6 mb-20'>
632 <Title className='mb-4 text-center'>Performance and Benchmarking</Title>
633 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
634 Measure and optimize performance with benchmarks and best practices for your Spice.ai
635 deployment.
636 </Paragraph>
637
638 <RecipeGroup recipes={filterByTag('performance')} />
639 </Container>
640
641 <Container className='mt-6 mb-20'>
642 <Title className='mb-4 text-center'>Configuration</Title>
643 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
644 Fine-tune your Spice.ai deployment with advanced configuration options for optimal
645 performance.
646 </Paragraph>
647
648 <RecipeGroup recipes={filterByTag('configuration')} />
649 </Container>
650
651 <Container className='mt-6 mb-20'>
652 <Title className='mb-4 text-center'>SDKs</Title>
653 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
654 Use SDKs for different programming languages.
655 </Paragraph>
656
657 <RecipeGroup recipes={filterByTag('sdk')} />
658 </Container>
659
660 <Container className='mt-6 mb-20'>
661 <Title className='mb-4 text-center'>Security</Title>
662 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
663 Secure your Spice.ai deployment and data access with robust security practices and
664 configurations.
665 </Paragraph>
666
667 <RecipeGroup recipes={filterByTag('security')} />
668 </Container>
669 </div>
670 )
671}
672
1import React from 'react'
2import { Title } from '@site/src/components/atoms/title/title'
3import { Paragraph } from '@site/src/components/atoms/paragraph/paragraph'
4import { Container } from '@site/src/components/atoms/container/container'
5import { Recipe } from '@site/src/components/molecules/recipe/recipe'
6import { Link } from '@site/src/components/atoms/link/link'
7import { Icon } from '@site/src/components/atoms/icon/icon'
8
9interface RecipeData {
10 title: string
11 description: string
12 path: string
13 tags: string[]
14 videoUrl?: string
15}
16
17const recipeBaseUrl = 'https://github.com/spiceai/cookbook/blob/trunk'
18
19const recipes: RecipeData[] = [
20 // Core scenarios
21 {
22 title: 'Federated SQL Query',
23 description: 'Query data from S3, PostgreSQL, and Dremio in a single query.',
24 path: '/federation/README.md',
25 tags: ['core', 'federation', 'sql']
26 },
27 // Sample Applications and guides
28 {
29 title: 'Command Query Responsibility Segregation (CQRS)',
30 description: 'Sample application implementing the CQRS pattern with Spice.',
31 path: '/cqrs/README.md',
32 tags: ['sample', 'cqrs', 'application']
33 },
34 {
35 title: 'Intelligent Security Copilot',
36 description: 'Analyze real-time data access patterns with Spice.ai.',
37 path: '/guides/security-analyzer/README.md',
38 tags: ['guide', 'security', 'analyzer']
39 },
40 // Models & AI
41 {
42 title: 'Azure OpenAI Models',
43 description: 'Connect and use Azure OpenAI models with Spice.',
44 path: '/azure_openai/README.md',
45 tags: ['ai', 'openai', 'azure']
46 },
47 {
48 title: 'Running Llama3 Locally',
49 description: 'Use the Llama family of models locally from HuggingFace using Spice.',
50 path: '/llama/README.md',
51 tags: ['ai', 'llama', 'huggingface'],
52 videoUrl: 'https://youtu.be/I2i6uZKBbd4'
53 },
54 {
55 title: 'OpenAI SDK',
56 description: 'Use the OpenAI SDK to connect to models hosted on Spice.',
57 path: '/openai_sdk/README.md',
58 tags: ['ai', 'openai', 'sdk', 'core']
59 },
60 {
61 title: 'LLM Memory',
62 description: 'Persistent memory for language models.',
63 path: '/llm-memory/README.md',
64 tags: ['ai', 'llm', 'memory'],
65 videoUrl: 'https://youtu.be/uc8TCAPu1IM'
66 },
67 {
68 title: 'Text to SQL (NSQL)',
69 description:
70 'Ask natural language (NLP) questions of your datasets using the built-in text-to-SQL tool.',
71 path: '/text-to-sql/README.md',
72 tags: ['ai', 'text-to-sql', 'nsql', 'tools']
73 },
74 {
75 title: 'Nvidia NIM',
76 description: 'Deploy Nvidia NIM infrastructure, on Kubernetes, with GPUs connected to Spice.',
77 path: '/nvidia-nim/README.md',
78 tags: ['ai', 'nvidia', 'nim']
79 },
80 {
81 title: 'Searching GitHub Files',
82 description: 'Search GitHub files with embeddings and vector similarity search.',
83 path: '/search_github_files/README.md',
84 tags: ['ai', 'github', 'search'],
85 videoUrl: 'https://youtu.be/5y26MveEJ8c'
86 },
87 {
88 title: 'xAI Models',
89 description: 'Use xAI models such as Grok.',
90 path: '/models/xai/README.md',
91 tags: ['ai', 'xai', 'models'],
92 videoUrl: 'https://youtu.be/-7RkAsqQLdk'
93 },
94 {
95 title: 'DeepSeek Model',
96 description: 'Use DeepSeek model through Spice.',
97 path: '/deepseek/README.md',
98 tags: ['ai', 'deepseek', 'models']
99 },
100 {
101 title: 'Model-Context-Protocol (MCP)',
102 description: 'Use Spice to connect to or host MCP servers.',
103 path: '/mcp/README.md',
104 tags: ['ai', 'mcp', 'tools']
105 },
106 // Data Acceleration
107 {
108 title: 'DuckDB Data Accelerator',
109 description: 'Accelerate data locally using DuckDB.',
110 path: '/duckdb/accelerator/README.md',
111 tags: ['core', 'acceleration', 'duckdb', 'data'],
112 videoUrl: 'https://youtu.be/hFvVz5NGpaw'
113 },
114 {
115 title: 'PostgreSQL Data Accelerator',
116 description: 'Accelerate data locally using PostgreSQL.',
117 path: '/postgres/accelerator/README.md',
118 tags: ['acceleration', 'postgresql', 'data']
119 },
120 {
121 title: 'SQLite Data Accelerator',
122 description: 'Accelerate data locally using SQLite.',
123 path: '/sqlite/accelerator/README.md',
124 tags: ['acceleration', 'sqlite', 'data']
125 },
126 {
127 title: 'Apache Arrow Data Accelerator',
128 description: 'Accelerate data using Apache Arrow.',
129 path: '/arrow/README.md',
130 tags: ['acceleration', 'apache', 'arrow']
131 },
132 {
133 title: 'Accelerated Views',
134 description: 'Use view materialization for improved performance.',
135 path: '/views/README.md',
136 tags: ['acceleration', 'views']
137 },
138 // Data Connectors
139 {
140 title: 'PostgreSQL Connector',
141 description: 'Connect to and query PostgreSQL databases.',
142 path: '/postgres/connector/README.md',
143 tags: ['connector', 'postgresql', 'query']
144 },
145 {
146 title: 'AWS RDS PostgreSQL',
147 description: 'Connect to AWS RDS PostgreSQL instances.',
148 path: '/postgres/rds/README.md',
149 tags: ['connector', 'aws', 'rds', 'postgresql']
150 },
151 {
152 title: 'Supabase PostgreSQL',
153 description: 'Connect to Supabase PostgreSQL databases.',
154 path: '/postgres/supabase/README.md',
155 tags: ['connector', 'supabase', 'postgresql']
156 },
157 {
158 title: 'MySQL Connector',
159 description: 'Connect to and query MySQL databases.',
160 path: '/mysql/connector/README.md',
161 tags: ['connector', 'mysql', 'query']
162 },
163 {
164 title: 'AWS RDS Aurora MySQL',
165 description: 'Connect to AWS RDS Aurora with MySQL compatibility.',
166 path: '/mysql/rds-aurora/README.md',
167 tags: ['connector', 'aws', 'rds', 'aurora', 'mysql']
168 },
169 {
170 title: 'PlanetScale MySQL',
171 description: 'Connect to PlanetScale MySQL databases.',
172 path: '/mysql/planetscale/README.md',
173 tags: ['connector', 'planetscale', 'mysql']
174 },
175 {
176 title: 'Clickhouse Connector',
177 description: 'Connect to and query Clickhouse databases.',
178 path: '/clickhouse/README.md',
179 tags: ['connector', 'clickhouse', 'query']
180 },
181 {
182 title: 'Databricks Connector',
183 description: 'Connect to and query Databricks instances using Delta Lake or Spark Connect.',
184 path: '/databricks/README.md',
185 tags: ['connector', 'databricks', 'delta', 'lake', 'spark', 'connect']
186 },
187 {
188 title: 'Delta Lake Connector',
189 description: 'Query data from Delta Lake tables.',
190 path: '/delta-lake/README.md',
191 tags: ['connector', 'delta', 'lake']
192 },
193 {
194 title: 'Debezium CDC from Postgres',
195 description: 'Stream changes from PostgreSQL using Debezium CDC.',
196 path: '/cdc-debezium/README.md',
197 tags: ['connector', 'debezium', 'cdc', 'postgresql']
198 },
199 {
200 title: 'Debezium CDC with SASL/SCRAM',
201 description: 'Stream MySQL changes using Debezium with SASL/SCRAM authentication.',
202 path: '/cdc-debezium/sasl-scram/README.md',
203 tags: ['connector', 'debezium', 'cdc', 'sasl', 'scram', 'mysql']
204 },
205 {
206 title: 'Dremio Connector',
207 description: 'Connect to and query Dremio.',
208 path: '/dremio/README.md',
209 tags: ['connector', 'dremio', 'query']
210 },
211 {
212 title: 'DuckDB Connector',
213 description: 'Query DuckDB databases with sample TPCH data.',
214 path: '/duckdb/connector/README.md',
215 tags: ['connector', 'duckdb', 'query']
216 },
217 {
218 title: 'File Connector',
219 description: 'Query data from local files.',
220 path: '/file/README.md',
221 tags: ['connector', 'file', 'query']
222 },
223 {
224 title: 'FTP Connector',
225 description: 'Query data from FTP servers.',
226 path: '/ftp/README.md',
227 tags: ['connector', 'ftp', 'query']
228 },
229 {
230 title: 'GitHub Connector',
231 description: 'Connect to and query GitHub data.',
232 path: '/github/README.md',
233 tags: ['connector', 'github', 'query']
234 },
235 {
236 title: 'GraphQL Connector',
237 description: 'Query data from GraphQL endpoints.',
238 path: '/graphql/README.md',
239 tags: ['connector', 'graphql', 'query']
240 },
241 {
242 title: 'MSSQL Connector',
243 description: 'Connect to Microsoft SQL Server databases.',
244 path: '/mssql/README.md',
245 tags: ['connector', 'mssql', 'query']
246 },
247 {
248 title: 'ODBC Connector',
249 description: 'Connect to databases using ODBC.',
250 path: '/odbc/README.md',
251 tags: ['connector', 'odbc', 'query']
252 },
253 {
254 title: 'S3 Connector',
255 description: 'Query data from S3 compatible storage.',
256 path: '/s3/README.md',
257 tags: ['connector', 's3', 'query']
258 },
259 {
260 title: 'SharePoint Connector',
261 description: 'Connect to SharePoint and OneDrive for Business.',
262 path: '/sharepoint/README.md',
263 tags: ['connector', 'sharepoint', 'onedrive']
264 },
265 {
266 title: 'Snowflake Connector',
267 description: 'Connect to and query Snowflake databases.',
268 path: '/snowflake/README.md',
269 tags: ['connector', 'snowflake', 'query']
270 },
271 {
272 title: 'Spice.ai Cloud Connector',
273 description: 'Connect to the Spice.ai Cloud Platform.',
274 path: '/spiceai/README.md',
275 tags: ['connector', 'spiceai', 'cloud']
276 },
277 {
278 title: 'Apache Spark Connector',
279 description: 'Connect to and query Apache Spark.',
280 path: '/spark/README.md',
281 tags: ['connector', 'apache', 'spark', 'query']
282 },
283 {
284 title: 'Spice.ai Cloud Platform Catalog',
285 description: 'Connect to the Spice.ai Cloud Platform catalog.',
286 path: '/catalogs/spiceai/README.md',
287 tags: ['catalog', 'spiceai', 'cloud']
288 },
289 {
290 title: 'Databricks Unity Catalog',
291 description: 'Connect to Databricks Unity catalog.',
292 path: '/catalogs/databricks/README.md',
293 tags: ['catalog', 'databricks', 'unity']
294 },
295 {
296 title: 'Unity Catalog',
297 description: 'Connect to Unity catalog.',
298 path: '/catalogs/unity_catalog/README.md',
299 tags: ['catalog', 'unity']
300 },
301 {
302 title: 'Iceberg Catalog',
303 description: 'Connect to Iceberg catalog.',
304 path: '/catalogs/iceberg/README.md',
305 tags: ['catalog', 'iceberg']
306 },
307 {
308 title: 'Sales BI with Apache Superset',
309 description: 'Visualize data in Spice with Apache Superset.',
310 path: '/sales-bi/README.md',
311 tags: ['visualization', 'bi', 'superset']
312 },
313 {
314 title: 'Grafana Datasource',
315 description: 'Add Spice as a Grafana datasource.',
316 path: '/grafana-datasource/README.md',
317 tags: ['visualization', 'grafana', 'datasource']
318 },
319 {
320 title: 'IMAP Emails',
321 description: 'Federated SQL query of mail across IMAP email servers',
322 path: '/imap/README.md',
323 tags: ['connector', 'imap', 'datasource']
324 },
325 // Deployment
326 {
327 title: 'Deploying to Kubernetes',
328 description: 'Deploy Spice.ai on Kubernetes.',
329 path: '/kubernetes/README.md',
330 tags: ['deployment', 'kubernetes']
331 },
332 {
333 title: 'Running in Docker',
334 description: 'Run Spice.ai in Docker containers.',
335 path: '/docker/README.md',
336 tags: ['deployment', 'docker']
337 },
338
339 // Performance
340 {
341 title: 'TPC-H Benchmarking',
342 description: 'Benchmark performance using TPC-H.',
343 path: '/tpc-h/README.md',
344 tags: ['performance', 'benchmarking', 'tpc-h']
345 },
346 {
347 title: 'Results Caching',
348 description: 'Cache query results for improved performance.',
349 path: '/caching/README.md',
350 tags: ['performance', 'caching']
351 },
352 {
353 title: 'Indexes on Accelerated Data',
354 description: 'Create and manage indexes on accelerated data.',
355 path: '/acceleration/indexes/README.md',
356 tags: ['performance', 'indexes', 'acceleration']
357 },
358
359 // Configuration
360 {
361 title: 'Data Retention Policy',
362 description: 'Configure data retention policies.',
363 path: '/retention/README.md',
364 tags: ['configuration', 'retention']
365 },
366 {
367 title: 'Refresh Data Window',
368 description: 'Configure data refresh windows.',
369 path: '/refresh-data-window/README.md',
370 tags: ['configuration', 'refresh']
371 },
372 {
373 title: 'Advanced Data Refresh',
374 description: 'Advanced configuration for data refresh.',
375 path: '/acceleration/data-refresh/README.md',
376 tags: ['configuration', 'data', 'refresh']
377 },
378 {
379 title: 'Data Quality with Constraints',
380 description: 'Add data quality constraints.',
381 path: '/acceleration/constraints/README.md',
382 tags: ['configuration', 'data', 'quality', 'constraints']
383 },
384
385 // Client SDKs
386 {
387 title: 'Rust SDK',
388 description: 'Query Spice.ai using the Rust SDK.',
389 path: '/client-sdk/spice-rs-sdk-sample/README.md',
390 tags: ['sdk', 'rust']
391 },
392 {
393 title: 'Python SDK',
394 description: 'Query Spice.ai using the Python SDK.',
395 path: '/client-sdk/spicepy-sdk-sample/README.md',
396 tags: ['sdk', 'python']
397 },
398 {
399 title: 'Go SDK',
400 description: 'Query Spice.ai using the Go SDK.',
401 path: '/client-sdk/gospice-sdk-sample/README.md',
402 tags: ['sdk', 'go']
403 },
404 {
405 title: 'JavaScript SDK',
406 description: 'Query Spice.ai using the JavaScript SDK.',
407 path: '/client-sdk/spice.js-sdk-sample/README.md',
408 tags: ['sdk', 'javascript']
409 },
410 {
411 title: 'Java SDK',
412 description: 'Query Spice.ai using the Java SDK.',
413 path: '/client-sdk/spice-java-sdk-sample/README.md',
414 tags: ['sdk', 'java']
415 },
416 // Clients
417 {
418 title: 'Python ADBC Client',
419 description: 'Query Spice using ADBC and Parameterized Queries with Python.',
420 path: '/clients/adbc/README.md',
421 tags: ['client', 'python', 'adbc', 'parameterized queries']
422 },
423 // Security
424 {
425 title: 'TLS Encryption',
426 description: 'Enable encryption in transit using TLS.',
427 path: '/tls/README.md',
428 tags: ['security', 'tls']
429 },
430 {
431 title: 'API Key Authentication',
432 description: 'Secure access with API key authentication.',
433 path: '/api_key/README.md',
434 tags: ['security', 'api', 'key']
435 },
436
437 // Advanced
438 {
439 title: 'Local Dataset Replication',
440 description: 'Link datasets in a parent/child relationship within the current Spicepod.',
441 path: '/localpod/README.md',
442 tags: ['advanced', 'replication', 'dataset']
443 }
444]
445
446const RecipeGroup: React.FC<{ recipes: RecipeData[] }> = ({ recipes }) => {
447 const getGridClass = (count: number) => {
448 if (count === 1) return 'grid-cols-1 max-w-sm mx-auto'
449 if (count === 2) return 'grid-cols-1 sm:grid-cols-2 max-w-2xl mx-auto'
450 if (count === 3) return 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 max-w-4xl mx-auto'
451 return 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4'
452 }
453
454 return (
455 <section className='mx-auto px-6 md:max-w-[1020px] md:px-0'>
456 <div className={`grid gap-4 ${getGridClass(recipes.length)}`}>
457 {recipes.map((recipe, index) => (
458 <div key={index} className='h-full'>
459 <Recipe
460 title={recipe.title}
461 description={recipe.description}
462 href={recipeBaseUrl + recipe.path}
463 videoUrl={recipe.videoUrl}
464 className='h-full px-4 py-4 text-xs gap-4 md:gap-8 md:px-8 md:py-8'
465 />
466 </div>
467 ))}
468 </div>
469 </section>
470 )
471}
472
473export function CookbookPage() {
474 const filterByTag = (...tags: string[]) =>
475 recipes.filter((r) => r.tags.some((t) => tags.includes(t)))
476
477 const description = `${recipes.length} guides and samples to help you build data-grounded AI apps and agents with Spice.ai Open-Source. Find ready-to-use examples for data acceleration, AI agents, LLM memory, and more.`
478
479 return (
480 <div className='tailwind font-sans'>
481 <Title as='h1' variant='large' className='mx-auto mb-7 mt-8 md:text-center xl:max-w-[1020px]'>
482 🧑‍🍳 Spice.ai OSS <span className='text-primary'>Cookbook</span>
483 </Title>
484
485 <Paragraph className='mb-6 md:text-center mx-auto px-6 md:max-w-[843px]'>
486 {description}
487 </Paragraph>
488
489 <Paragraph className='mb-6 md:text-center mx-auto px-6 md:max-w-[843px] hover:underline'>
490 <Link
491 className='inline-flex gap-1.5'
492 target='_blank'
493 href='https://github.com/spiceai/cookbook/blob/trunk/README.md'
494 >
495 <Icon iconName='github' /> Contribute to the Cookbook on GitHub!
496 </Link>
497 </Paragraph>
498
499 <Container className='mt-6 mb-20'>
500 <Title className='mb-14 text-center'>Featured Recipes</Title>
501
502 <section className='mx-auto px-6 md:max-w-[843px] md:px-0'>
503 <div className='flex flex-col gap-6 md:flex-row'>
504 <div className='flex w-full flex-col gap-6 md:w-1/2'>
505 <Recipe
506 title='Federated SQL Query'
507 description='Join S3, PostgreSQL, and Dremio data in one SQL query.'
508 href={`${recipeBaseUrl}/federation/README.md`}
509 />
510 <Recipe
511 title='Run Llama3 Locally'
512 description='Use Llama models from HuggingFace with Spice.'
513 href={`${recipeBaseUrl}/llama/README.md`}
514 videoUrl='https://youtu.be/I2i6uZKBbd4'
515 />
516 </div>
517 <div className='flex w-full flex-col gap-6 md:w-1/2 md:pt-20'>
518 <Recipe
519 title='Data Acceleration with DuckDB'
520 description='Speed up queries using DuckDB.'
521 href={`${recipeBaseUrl}/duckdb/accelerator/README.md`}
522 videoUrl='https://youtu.be/hFvVz5NGpaw'
523 />
524 <Recipe
525 title='LLM Memory'
526 description='Persistent memory for language models'
527 href={`${recipeBaseUrl}/llm-memory/README.md`}
528 videoUrl='https://youtu.be/uc8TCAPu1IM'
529 />
530 </div>
531 </div>
532 </section>
533 </Container>
534
535 <Container className='mt-6 mb-20'>
536 <Title className='mb-4 text-center'>Sample Applications and Guides</Title>
537 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
538 Example apps and guides for real-world Spice.ai usage and best practices.
539 </Paragraph>
540
541 <RecipeGroup recipes={filterByTag('sample')} />
542 </Container>
543
544 <Container className='mt-6 mb-20'>
545 <Title className='mb-4 text-center'>Core Features</Title>
546 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
547 Discover core capabilities like data federation, acceleration, search, and LLM inference
548 to enhance your applications.
549 </Paragraph>
550
551 <RecipeGroup recipes={filterByTag('core')} />
552 </Container>
553
554 <Container className='mt-6 mb-20'>
555 <Title className='mb-4 text-center'>Models, AI, and Agents</Title>
556 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
557 Integrate with popular AI models, LLMs, and build intelligent agents using Spice.ai.
558 </Paragraph>
559
560 <RecipeGroup recipes={filterByTag('ai')} />
561 </Container>
562
563 <Container className='mt-6 mb-20'>
564 <Title className='mb-4 text-center'>
565 Data Acceleration, Materialization, and Federation
566 </Title>
567 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
568 Optimize query performance with local acceleration, data materialization, and federation
569 techniques.
570 </Paragraph>
571
572 <RecipeGroup recipes={filterByTag('acceleration')} />
573 </Container>
574
575 <Container className='mt-6 mb-20'>
576 <Title className='mb-4 text-center'>Search & Embeddings</Title>
577 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
578 Implement advanced search capabilities and leverage embeddings for vector similarity
579 search.
580 </Paragraph>
581
582 <RecipeGroup recipes={filterByTag('search')} />
583 </Container>
584
585 <Container className='mt-6 mb-20'>
586 <Title className='mb-4 text-center'>Data Connectors</Title>
587 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
588 Connect to various data sources and systems to query, analyze, and manage your data
589 efficiently.
590 </Paragraph>
591
592 <RecipeGroup recipes={filterByTag('connector')} />
593 </Container>
594
595 <Container className='mt-6 mb-20'>
596 <Title className='mb-4 text-center'>Catalog Connectors</Title>
597 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
598 Connect to data catalogs to discover, manage, and utilize your data assets effectively.
599 </Paragraph>
600
601 <RecipeGroup recipes={filterByTag('catalog')} />
602 </Container>
603
604 <Container className='mt-6 mb-20'>
605 <Title className='mb-4 text-center'>Visualization</Title>
606 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
607 Visualize data with BI and analytics tools.
608 </Paragraph>
609
610 <RecipeGroup recipes={filterByTag('visualization')} />
611 </Container>
612
613 <Container className='mt-6 mb-20'>
614 <Title className='mb-4 text-center'>API Clients</Title>
615 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
616 Use API clients for data access and integration.
617 </Paragraph>
618
619 <RecipeGroup recipes={filterByTag('client')} />
620 </Container>
621
622 <Container className='mt-6 mb-20'>
623 <Title className='mb-4 text-center'>Deployment</Title>
624 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
625 Deploy Spice.ai in different environments.
626 </Paragraph>
627
628 <RecipeGroup recipes={filterByTag('deployment')} />
629 </Container>
630
631 <Container className='mt-6 mb-20'>
632 <Title className='mb-4 text-center'>Performance and Benchmarking</Title>
633 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
634 Measure and optimize performance with benchmarks and best practices for your Spice.ai
635 deployment.
636 </Paragraph>
637
638 <RecipeGroup recipes={filterByTag('performance')} />
639 </Container>
640
641 <Container className='mt-6 mb-20'>
642 <Title className='mb-4 text-center'>Configuration</Title>
643 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
644 Fine-tune your Spice.ai deployment with advanced configuration options for optimal
645 performance.
646 </Paragraph>
647
648 <RecipeGroup recipes={filterByTag('configuration')} />
649 </Container>
650
651 <Container className='mt-6 mb-20'>
652 <Title className='mb-4 text-center'>SDKs</Title>
653 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
654 Use SDKs for different programming languages.
655 </Paragraph>
656
657 <RecipeGroup recipes={filterByTag('sdk')} />
658 </Container>
659
660 <Container className='mt-6 mb-20'>
661 <Title className='mb-4 text-center'>Security</Title>
662 <Paragraph className='mb-14 md:text-center mx-auto px-6 md:max-w-[843px]'>
663 Secure your Spice.ai deployment and data access with robust security practices and
664 configurations.
665 </Paragraph>
666
667 <RecipeGroup recipes={filterByTag('security')} />
668 </Container>
669 </div>
670 )
671}
672