vectra-client 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -44
- data/README.md +99 -15
- data/docs/_layouts/default.html +97 -2
- data/docs/_layouts/home.html +408 -4
- data/docs/_layouts/page.html +38 -2
- data/docs/assets/favicon.svg +8 -0
- data/docs/assets/logo.svg +10 -0
- data/docs/assets/radme.png +0 -0
- data/docs/assets/readme-new.png +0 -0
- data/docs/assets/seo.png +0 -0
- data/docs/assets/style.css +389 -24
- data/docs/examples/index.md +1 -0
- data/docs/guides/getting-started.md +15 -0
- data/docs/index.md +8 -0
- data/examples/README.md +18 -0
- data/lib/generators/vectra/index_generator.rb +157 -0
- data/lib/vectra/client.rb +1 -1
- data/lib/vectra/version.rb +1 -1
- metadata +7 -1
data/docs/_layouts/home.html
CHANGED
|
@@ -5,15 +5,34 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<meta name="description" content="{{ site.description }}">
|
|
7
7
|
<title>{{ page.title }} - {{ site.title }}</title>
|
|
8
|
+
|
|
9
|
+
<!-- Primary styles -->
|
|
8
10
|
<link rel="stylesheet" href="{{ site.baseurl }}/assets/style.css">
|
|
9
|
-
|
|
11
|
+
|
|
12
|
+
<!-- Favicon -->
|
|
13
|
+
<link rel="icon" type="image/svg+xml" href="{{ site.baseurl }}/assets/favicon.svg">
|
|
14
|
+
|
|
15
|
+
<!-- SEO Meta -->
|
|
16
|
+
<meta property="og:title" content="{{ page.title | default: site.title }}">
|
|
17
|
+
<meta property="og:description" content="{{ site.description }}">
|
|
18
|
+
<meta property="og:type" content="website">
|
|
19
|
+
<meta property="og:url" content="{{ page.url | absolute_url }}">
|
|
20
|
+
<meta property="og:image" content="{{ site.url }}{{ site.baseurl }}/assets/seo.png">
|
|
21
|
+
|
|
22
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
23
|
+
<meta name="twitter:title" content="{{ page.title | default: site.title }}">
|
|
24
|
+
<meta name="twitter:description" content="{{ site.description }}">
|
|
25
|
+
<meta name="twitter:image" content="{{ site.url }}{{ site.baseurl }}/assets/seo.png">
|
|
26
|
+
|
|
10
27
|
<script defer src="https://umami-production-dfb8.up.railway.app/script.js" data-website-id="07e5420c-12d1-4e3c-9dbd-5cecb15a878f"></script>
|
|
11
28
|
</head>
|
|
12
29
|
<body>
|
|
13
30
|
<!-- Header -->
|
|
14
31
|
<header class="tma-header">
|
|
15
32
|
<nav class="tma-nav">
|
|
16
|
-
<a href="{{ site.baseurl }}/" class="tma-nav__brand">
|
|
33
|
+
<a href="{{ site.baseurl }}/" class="tma-nav__brand">
|
|
34
|
+
<img src="{{ site.baseurl }}/assets/logo.svg" alt="Vectra" class="tma-nav__logo">
|
|
35
|
+
</a>
|
|
17
36
|
<button class="tma-nav__toggle" aria-label="Toggle menu" aria-expanded="false">
|
|
18
37
|
<span class="tma-nav__toggle-line"></span>
|
|
19
38
|
<span class="tma-nav__toggle-line"></span>
|
|
@@ -35,7 +54,7 @@
|
|
|
35
54
|
<!-- Hero Section -->
|
|
36
55
|
<section class="tma-hero">
|
|
37
56
|
<div class="tma-hero__container">
|
|
38
|
-
<span class="tma-hero__badge">
|
|
57
|
+
<span class="tma-hero__badge">v1.0.1 — Hybrid Search & Rails Generator</span>
|
|
39
58
|
<h1 class="tma-hero__title">
|
|
40
59
|
Vector Databases,<br>
|
|
41
60
|
<span class="tma-hero__title-gradient">Unified for Ruby.</span>
|
|
@@ -110,6 +129,391 @@
|
|
|
110
129
|
</div>
|
|
111
130
|
</section>
|
|
112
131
|
|
|
132
|
+
<!-- Comparison Section -->
|
|
133
|
+
<section class="tma-comparison">
|
|
134
|
+
<div class="tma-section-header">
|
|
135
|
+
<h2 class="tma-section-header__title">Comprehensive Feature Comparison</h2>
|
|
136
|
+
<p class="tma-section-header__subtitle">See how Vectra compares to other Ruby vector database clients</p>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<div style="overflow-x: auto;">
|
|
140
|
+
<table class="tma-comparison-table">
|
|
141
|
+
<thead>
|
|
142
|
+
<tr>
|
|
143
|
+
<th>Feature</th>
|
|
144
|
+
<th>Vectra</th>
|
|
145
|
+
<th>Langchain.rb</th>
|
|
146
|
+
<th>pgvector-ruby</th>
|
|
147
|
+
<th>qdrant-ruby</th>
|
|
148
|
+
</tr>
|
|
149
|
+
</thead>
|
|
150
|
+
<tbody>
|
|
151
|
+
<tr>
|
|
152
|
+
<td><strong>Multi-Provider Support</strong></td>
|
|
153
|
+
<td class="tma-check">✅ 5 providers</td>
|
|
154
|
+
<td class="tma-partial">⚠️ 6+ (fragmented)</td>
|
|
155
|
+
<td class="tma-cross">❌ PostgreSQL only</td>
|
|
156
|
+
<td class="tma-cross">❌ Qdrant only</td>
|
|
157
|
+
</tr>
|
|
158
|
+
<tr>
|
|
159
|
+
<td><strong>Unified API</strong></td>
|
|
160
|
+
<td class="tma-check">✅ Single interface</td>
|
|
161
|
+
<td class="tma-cross">❌ Provider-specific</td>
|
|
162
|
+
<td class="tma-cross">❌ N/A</td>
|
|
163
|
+
<td class="tma-cross">❌ N/A</td>
|
|
164
|
+
</tr>
|
|
165
|
+
<tr>
|
|
166
|
+
<td><strong>Circuit Breaker</strong></td>
|
|
167
|
+
<td class="tma-check">✅ Built-in</td>
|
|
168
|
+
<td class="tma-cross">❌ Manual</td>
|
|
169
|
+
<td class="tma-cross">❌ Manual</td>
|
|
170
|
+
<td class="tma-cross">❌ Manual</td>
|
|
171
|
+
</tr>
|
|
172
|
+
<tr>
|
|
173
|
+
<td><strong>Rate Limiting</strong></td>
|
|
174
|
+
<td class="tma-check">✅ Token bucket</td>
|
|
175
|
+
<td class="tma-cross">❌ Manual</td>
|
|
176
|
+
<td class="tma-cross">❌ Manual</td>
|
|
177
|
+
<td class="tma-cross">❌ Manual</td>
|
|
178
|
+
</tr>
|
|
179
|
+
<tr>
|
|
180
|
+
<td><strong>Retry Logic</strong></td>
|
|
181
|
+
<td class="tma-check">✅ Exponential backoff</td>
|
|
182
|
+
<td class="tma-cross">❌ Manual</td>
|
|
183
|
+
<td class="tma-cross">❌ Manual</td>
|
|
184
|
+
<td class="tma-partial">⚠️ Basic</td>
|
|
185
|
+
</tr>
|
|
186
|
+
<tr>
|
|
187
|
+
<td><strong>Instrumentation</strong></td>
|
|
188
|
+
<td class="tma-check">✅ 4 backends</td>
|
|
189
|
+
<td class="tma-cross">❌ None</td>
|
|
190
|
+
<td class="tma-cross">❌ None</td>
|
|
191
|
+
<td class="tma-cross">❌ None</td>
|
|
192
|
+
</tr>
|
|
193
|
+
<tr>
|
|
194
|
+
<td><strong>Connection Pooling</strong></td>
|
|
195
|
+
<td class="tma-check">✅ Built-in</td>
|
|
196
|
+
<td class="tma-cross">❌ Manual</td>
|
|
197
|
+
<td class="tma-partial">⚠️ Via pg gem</td>
|
|
198
|
+
<td class="tma-cross">❌ Manual</td>
|
|
199
|
+
</tr>
|
|
200
|
+
<tr>
|
|
201
|
+
<td><strong>Caching Layer</strong></td>
|
|
202
|
+
<td class="tma-check">✅ TTL + LRU</td>
|
|
203
|
+
<td class="tma-cross">❌ Manual</td>
|
|
204
|
+
<td class="tma-cross">❌ Manual</td>
|
|
205
|
+
<td class="tma-cross">❌ Manual</td>
|
|
206
|
+
</tr>
|
|
207
|
+
<tr>
|
|
208
|
+
<td><strong>Health Checks</strong></td>
|
|
209
|
+
<td class="tma-check">✅ 3 methods</td>
|
|
210
|
+
<td class="tma-cross">❌ Manual</td>
|
|
211
|
+
<td class="tma-cross">❌ Manual</td>
|
|
212
|
+
<td class="tma-cross">❌ Manual</td>
|
|
213
|
+
</tr>
|
|
214
|
+
<tr>
|
|
215
|
+
<td><strong>Rails Integration</strong></td>
|
|
216
|
+
<td class="tma-check">✅ has_vector DSL</td>
|
|
217
|
+
<td class="tma-check">✅ Via langchainrb_rails</td>
|
|
218
|
+
<td class="tma-partial">⚠️ Manual setup</td>
|
|
219
|
+
<td class="tma-partial">⚠️ Manual setup</td>
|
|
220
|
+
</tr>
|
|
221
|
+
<tr>
|
|
222
|
+
<td><strong>Query Builder</strong></td>
|
|
223
|
+
<td class="tma-check">✅ Chainable API</td>
|
|
224
|
+
<td class="tma-cross">❌ None</td>
|
|
225
|
+
<td class="tma-cross">❌ None</td>
|
|
226
|
+
<td class="tma-cross">❌ None</td>
|
|
227
|
+
</tr>
|
|
228
|
+
<tr>
|
|
229
|
+
<td><strong>Batch Operations</strong></td>
|
|
230
|
+
<td class="tma-check">✅ With progress</td>
|
|
231
|
+
<td class="tma-partial">⚠️ Basic</td>
|
|
232
|
+
<td class="tma-cross">❌ Manual</td>
|
|
233
|
+
<td class="tma-partial">⚠️ Basic</td>
|
|
234
|
+
</tr>
|
|
235
|
+
<tr>
|
|
236
|
+
<td><strong>Hybrid Search</strong></td>
|
|
237
|
+
<td class="tma-check">✅ 4 providers</td>
|
|
238
|
+
<td class="tma-cross">❌ Not documented</td>
|
|
239
|
+
<td class="tma-cross">❌ Manual SQL</td>
|
|
240
|
+
<td class="tma-partial">⚠️ Via API</td>
|
|
241
|
+
</tr>
|
|
242
|
+
<tr>
|
|
243
|
+
<td><strong>Vector Normalization</strong></td>
|
|
244
|
+
<td class="tma-check">✅ L2/L1 helpers</td>
|
|
245
|
+
<td class="tma-cross">❌ Manual</td>
|
|
246
|
+
<td class="tma-cross">❌ Manual</td>
|
|
247
|
+
<td class="tma-cross">❌ Manual</td>
|
|
248
|
+
</tr>
|
|
249
|
+
<tr>
|
|
250
|
+
<td><strong>Testing Support</strong></td>
|
|
251
|
+
<td class="tma-check">✅ Mock provider</td>
|
|
252
|
+
<td class="tma-cross">❌ Manual mocking</td>
|
|
253
|
+
<td class="tma-cross">❌ Test DB</td>
|
|
254
|
+
<td class="tma-cross">❌ Test server</td>
|
|
255
|
+
</tr>
|
|
256
|
+
<tr>
|
|
257
|
+
<td><strong>Dimension Validation</strong></td>
|
|
258
|
+
<td class="tma-check">✅ Automatic</td>
|
|
259
|
+
<td class="tma-cross">❌ Manual</td>
|
|
260
|
+
<td class="tma-cross">❌ Manual</td>
|
|
261
|
+
<td class="tma-cross">❌ Manual</td>
|
|
262
|
+
</tr>
|
|
263
|
+
<tr>
|
|
264
|
+
<td><strong>Error Handling</strong></td>
|
|
265
|
+
<td class="tma-check">✅ 10 error types</td>
|
|
266
|
+
<td class="tma-partial">⚠️ Basic</td>
|
|
267
|
+
<td class="tma-partial">⚠️ Basic</td>
|
|
268
|
+
<td class="tma-partial">⚠️ Basic</td>
|
|
269
|
+
</tr>
|
|
270
|
+
<tr>
|
|
271
|
+
<td><strong>Audit Logging</strong></td>
|
|
272
|
+
<td class="tma-check">✅ Built-in</td>
|
|
273
|
+
<td class="tma-cross">❌ Manual</td>
|
|
274
|
+
<td class="tma-cross">❌ Manual</td>
|
|
275
|
+
<td class="tma-cross">❌ Manual</td>
|
|
276
|
+
</tr>
|
|
277
|
+
<tr>
|
|
278
|
+
<td><strong>Credential Rotation</strong></td>
|
|
279
|
+
<td class="tma-check">✅ Zero-downtime</td>
|
|
280
|
+
<td class="tma-cross">❌ Manual</td>
|
|
281
|
+
<td class="tma-cross">❌ Manual</td>
|
|
282
|
+
<td class="tma-cross">❌ Manual</td>
|
|
283
|
+
</tr>
|
|
284
|
+
<tr>
|
|
285
|
+
<td><strong>Test Coverage</strong></td>
|
|
286
|
+
<td class="tma-check">✅ 95%+</td>
|
|
287
|
+
<td class="tma-partial">⚠️ Not disclosed</td>
|
|
288
|
+
<td class="tma-partial">⚠️ Not disclosed</td>
|
|
289
|
+
<td class="tma-partial">⚠️ Not disclosed</td>
|
|
290
|
+
</tr>
|
|
291
|
+
</tbody>
|
|
292
|
+
</table>
|
|
293
|
+
</div>
|
|
294
|
+
|
|
295
|
+
<p style="text-align: center; margin-top: var(--tma-spacing-lg); color: var(--tma-color-text-muted); font-size: 0.85rem;">
|
|
296
|
+
<strong>Legend:</strong> ✅ Full Support | ⚠️ Partial/Limited | ❌ Not Available
|
|
297
|
+
</p>
|
|
298
|
+
</section>
|
|
299
|
+
|
|
300
|
+
<!-- Visual Charts Section -->
|
|
301
|
+
<section class="tma-charts">
|
|
302
|
+
<div class="tma-section-header">
|
|
303
|
+
<h2 class="tma-section-header__title">Visual Comparison</h2>
|
|
304
|
+
<p class="tma-section-header__subtitle">See the difference at a glance</p>
|
|
305
|
+
</div>
|
|
306
|
+
|
|
307
|
+
<div class="tma-charts__grid">
|
|
308
|
+
<!-- Feature Count Bar Chart -->
|
|
309
|
+
<div class="tma-chart-card">
|
|
310
|
+
<h3 class="tma-chart-card__title">Feature Count Comparison</h3>
|
|
311
|
+
<div class="tma-bar-chart">
|
|
312
|
+
<div class="tma-bar-chart__item">
|
|
313
|
+
<div class="tma-bar-chart__label">
|
|
314
|
+
<span class="tma-bar-chart__name">Vectra</span>
|
|
315
|
+
<span class="tma-bar-chart__value">22 features</span>
|
|
316
|
+
</div>
|
|
317
|
+
<div class="tma-bar-chart__bar-container">
|
|
318
|
+
<div class="tma-bar-chart__bar tma-bar-chart__bar--vectra" style="width: 100%;">22</div>
|
|
319
|
+
</div>
|
|
320
|
+
</div>
|
|
321
|
+
|
|
322
|
+
<div class="tma-bar-chart__item">
|
|
323
|
+
<div class="tma-bar-chart__label">
|
|
324
|
+
<span class="tma-bar-chart__name">Langchain.rb</span>
|
|
325
|
+
<span class="tma-bar-chart__value">10 features</span>
|
|
326
|
+
</div>
|
|
327
|
+
<div class="tma-bar-chart__bar-container">
|
|
328
|
+
<div class="tma-bar-chart__bar tma-bar-chart__bar--langchain" style="width: 45.5%;">10</div>
|
|
329
|
+
</div>
|
|
330
|
+
</div>
|
|
331
|
+
|
|
332
|
+
<div class="tma-bar-chart__item">
|
|
333
|
+
<div class="tma-bar-chart__label">
|
|
334
|
+
<span class="tma-bar-chart__name">qdrant-ruby</span>
|
|
335
|
+
<span class="tma-bar-chart__value">7 features</span>
|
|
336
|
+
</div>
|
|
337
|
+
<div class="tma-bar-chart__bar-container">
|
|
338
|
+
<div class="tma-bar-chart__bar tma-bar-chart__bar--qdrant" style="width: 31.8%;">7</div>
|
|
339
|
+
</div>
|
|
340
|
+
</div>
|
|
341
|
+
|
|
342
|
+
<div class="tma-bar-chart__item">
|
|
343
|
+
<div class="tma-bar-chart__label">
|
|
344
|
+
<span class="tma-bar-chart__name">pgvector-ruby</span>
|
|
345
|
+
<span class="tma-bar-chart__value">6 features</span>
|
|
346
|
+
</div>
|
|
347
|
+
<div class="tma-bar-chart__bar-container">
|
|
348
|
+
<div class="tma-bar-chart__bar tma-bar-chart__bar--pgvector" style="width: 27.3%;">6</div>
|
|
349
|
+
</div>
|
|
350
|
+
</div>
|
|
351
|
+
</div>
|
|
352
|
+
</div>
|
|
353
|
+
|
|
354
|
+
<!-- Production Readiness Radar Chart -->
|
|
355
|
+
<div class="tma-chart-card">
|
|
356
|
+
<h3 class="tma-chart-card__title">Production Readiness</h3>
|
|
357
|
+
<div class="tma-radar-chart">
|
|
358
|
+
<div class="tma-radar-chart__container">
|
|
359
|
+
<svg class="tma-radar-chart__svg" viewBox="0 0 200 200">
|
|
360
|
+
<!-- Grid circles -->
|
|
361
|
+
<circle cx="100" cy="100" r="80" class="tma-radar-chart__grid" />
|
|
362
|
+
<circle cx="100" cy="100" r="60" class="tma-radar-chart__grid" />
|
|
363
|
+
<circle cx="100" cy="100" r="40" class="tma-radar-chart__grid" />
|
|
364
|
+
<circle cx="100" cy="100" r="20" class="tma-radar-chart__grid" />
|
|
365
|
+
|
|
366
|
+
<!-- Axes (6 dimensions) -->
|
|
367
|
+
<line x1="100" y1="100" x2="100" y2="20" class="tma-radar-chart__axis" />
|
|
368
|
+
<line x1="100" y1="100" x2="173.2" y2="60" class="tma-radar-chart__axis" />
|
|
369
|
+
<line x1="100" y1="100" x2="173.2" y2="140" class="tma-radar-chart__axis" />
|
|
370
|
+
<line x1="100" y1="100" x2="100" y2="180" class="tma-radar-chart__axis" />
|
|
371
|
+
<line x1="100" y1="100" x2="26.8" y2="140" class="tma-radar-chart__axis" />
|
|
372
|
+
<line x1="100" y1="100" x2="26.8" y2="60" class="tma-radar-chart__axis" />
|
|
373
|
+
|
|
374
|
+
<!-- Vectra area (all 100%) -->
|
|
375
|
+
<polygon points="100,20 173.2,60 173.2,140 100,180 26.8,140 26.8,60" class="tma-radar-chart__area" />
|
|
376
|
+
|
|
377
|
+
<!-- Points -->
|
|
378
|
+
<circle cx="100" cy="20" class="tma-radar-chart__point" />
|
|
379
|
+
<circle cx="173.2" cy="60" class="tma-radar-chart__point" />
|
|
380
|
+
<circle cx="173.2" cy="140" class="tma-radar-chart__point" />
|
|
381
|
+
<circle cx="100" cy="180" class="tma-radar-chart__point" />
|
|
382
|
+
<circle cx="26.8" cy="140" class="tma-radar-chart__point" />
|
|
383
|
+
<circle cx="26.8" cy="60" class="tma-radar-chart__point" />
|
|
384
|
+
</svg>
|
|
385
|
+
|
|
386
|
+
<!-- Labels -->
|
|
387
|
+
<div class="tma-radar-chart__labels">
|
|
388
|
+
<div class="tma-radar-chart__label-item" style="text-align: center;">Multi-Provider</div>
|
|
389
|
+
<div class="tma-radar-chart__label-item" style="text-align: right; padding-right: 20px;">Production Patterns</div>
|
|
390
|
+
<div class="tma-radar-chart__label-item" style="text-align: right; padding-right: 20px;">Developer Experience</div>
|
|
391
|
+
<div class="tma-radar-chart__label-item" style="text-align: center;">Testing Support</div>
|
|
392
|
+
<div class="tma-radar-chart__label-item" style="text-align: left; padding-left: 20px;">Observability</div>
|
|
393
|
+
<div class="tma-radar-chart__label-item" style="text-align: left; padding-left: 20px;">Documentation</div>
|
|
394
|
+
</div>
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
<p style="text-align: center; margin-top: var(--tma-spacing-md); color: var(--tma-color-text-muted); font-size: 0.85rem;">
|
|
398
|
+
Vectra scores 100% across all production readiness dimensions
|
|
399
|
+
</p>
|
|
400
|
+
</div>
|
|
401
|
+
</div>
|
|
402
|
+
</section>
|
|
403
|
+
|
|
404
|
+
<!-- Advantages Section -->
|
|
405
|
+
<section class="tma-advantages">
|
|
406
|
+
<div class="tma-section-header">
|
|
407
|
+
<h2 class="tma-section-header__title">Vectra Unique Advantages</h2>
|
|
408
|
+
<p class="tma-section-header__subtitle">What makes Vectra the best choice for Ruby developers</p>
|
|
409
|
+
</div>
|
|
410
|
+
|
|
411
|
+
<div class="tma-advantages__grid">
|
|
412
|
+
<div class="tma-advantage-card">
|
|
413
|
+
<h3 class="tma-advantage-card__title">1. Only Unified Ruby Client</h3>
|
|
414
|
+
<ul class="tma-advantage-card__list">
|
|
415
|
+
<li>Single API za 5 različitih providera</li>
|
|
416
|
+
<li>Switch provider s 1 line of code</li>
|
|
417
|
+
<li>No Python envy needed</li>
|
|
418
|
+
</ul>
|
|
419
|
+
</div>
|
|
420
|
+
|
|
421
|
+
<div class="tma-advantage-card">
|
|
422
|
+
<h3 class="tma-advantage-card__title">2. Enterprise Production Patterns</h3>
|
|
423
|
+
<ul class="tma-advantage-card__list">
|
|
424
|
+
<li>Circuit Breaker ✅</li>
|
|
425
|
+
<li>Rate Limiter ✅</li>
|
|
426
|
+
<li>Retry Logic ✅</li>
|
|
427
|
+
<li>Connection Pooling ✅</li>
|
|
428
|
+
<li>Caching ✅</li>
|
|
429
|
+
<li>Health Checks ✅</li>
|
|
430
|
+
<li>Audit Logging ✅</li>
|
|
431
|
+
</ul>
|
|
432
|
+
</div>
|
|
433
|
+
|
|
434
|
+
<div class="tma-advantage-card">
|
|
435
|
+
<h3 class="tma-advantage-card__title">3. Developer Experience</h3>
|
|
436
|
+
<ul class="tma-advantage-card__list">
|
|
437
|
+
<li>Query Builder (chainable API)</li>
|
|
438
|
+
<li>Mock Provider (testing)</li>
|
|
439
|
+
<li>Dimension Validation</li>
|
|
440
|
+
<li>Enhanced Error Messages</li>
|
|
441
|
+
<li>Progress Callbacks</li>
|
|
442
|
+
</ul>
|
|
443
|
+
</div>
|
|
444
|
+
|
|
445
|
+
<div class="tma-advantage-card">
|
|
446
|
+
<h3 class="tma-advantage-card__title">4. Rails-First Design</h3>
|
|
447
|
+
<ul class="tma-advantage-card__list">
|
|
448
|
+
<li>has_vector DSL</li>
|
|
449
|
+
<li>Automatic migrations</li>
|
|
450
|
+
<li>Seamless ActiveRecord integration</li>
|
|
451
|
+
</ul>
|
|
452
|
+
</div>
|
|
453
|
+
|
|
454
|
+
<div class="tma-advantage-card">
|
|
455
|
+
<h3 class="tma-advantage-card__title">5. Observability Built-In</h3>
|
|
456
|
+
<ul class="tma-advantage-card__list">
|
|
457
|
+
<li>Datadog</li>
|
|
458
|
+
<li>New Relic</li>
|
|
459
|
+
<li>Sentry</li>
|
|
460
|
+
<li>Honeybadger</li>
|
|
461
|
+
</ul>
|
|
462
|
+
</div>
|
|
463
|
+
</div>
|
|
464
|
+
</section>
|
|
465
|
+
|
|
466
|
+
<!-- Choose Section -->
|
|
467
|
+
<section class="tma-choose">
|
|
468
|
+
<div class="tma-section-header">
|
|
469
|
+
<h2 class="tma-section-header__title">Which Solution Should You Choose?</h2>
|
|
470
|
+
<p class="tma-section-header__subtitle">Find the right tool for your needs</p>
|
|
471
|
+
</div>
|
|
472
|
+
|
|
473
|
+
<div class="tma-choose__grid">
|
|
474
|
+
<div class="tma-choose-card">
|
|
475
|
+
<h3 class="tma-choose-card__title">✅ Choose Vectra if you need:</h3>
|
|
476
|
+
<ul class="tma-choose-card__list">
|
|
477
|
+
<li>Multi-provider support with single API</li>
|
|
478
|
+
<li>Production-grade resilience patterns</li>
|
|
479
|
+
<li>Rails integration with minimal setup</li>
|
|
480
|
+
<li>Enterprise observability</li>
|
|
481
|
+
<li>Easy testing without external dependencies</li>
|
|
482
|
+
</ul>
|
|
483
|
+
</div>
|
|
484
|
+
|
|
485
|
+
<div class="tma-choose-card">
|
|
486
|
+
<h3 class="tma-choose-card__title">Choose Langchain.rb if you need:</h3>
|
|
487
|
+
<ul class="tma-choose-card__list">
|
|
488
|
+
<li>LLM orchestration framework</li>
|
|
489
|
+
<li>RAG pipeline tools</li>
|
|
490
|
+
<li>Multi-modal AI workflows</li>
|
|
491
|
+
<li>Broader AI ecosystem integration</li>
|
|
492
|
+
</ul>
|
|
493
|
+
</div>
|
|
494
|
+
|
|
495
|
+
<div class="tma-choose-card">
|
|
496
|
+
<h3 class="tma-choose-card__title">Choose pgvector-ruby if you:</h3>
|
|
497
|
+
<ul class="tma-choose-card__list">
|
|
498
|
+
<li>Only use PostgreSQL</li>
|
|
499
|
+
<li>Need direct SQL control</li>
|
|
500
|
+
<li>Want minimal dependencies</li>
|
|
501
|
+
<li>Have existing Postgres infrastructure</li>
|
|
502
|
+
</ul>
|
|
503
|
+
</div>
|
|
504
|
+
|
|
505
|
+
<div class="tma-choose-card">
|
|
506
|
+
<h3 class="tma-choose-card__title">Choose qdrant-ruby if you:</h3>
|
|
507
|
+
<ul class="tma-choose-card__list">
|
|
508
|
+
<li>Only use Qdrant</li>
|
|
509
|
+
<li>Need Qdrant-specific features</li>
|
|
510
|
+
<li>Want direct API access</li>
|
|
511
|
+
<li>Self-host Qdrant</li>
|
|
512
|
+
</ul>
|
|
513
|
+
</div>
|
|
514
|
+
</div>
|
|
515
|
+
</section>
|
|
516
|
+
|
|
113
517
|
<!-- Providers Section -->
|
|
114
518
|
<section class="tma-providers">
|
|
115
519
|
<div class="tma-section-header">
|
|
@@ -179,7 +583,7 @@
|
|
|
179
583
|
<div class="tma-footer__container">
|
|
180
584
|
<div>
|
|
181
585
|
<span class="tma-footer__brand">◆ Vectra</span>
|
|
182
|
-
<p class="tma-footer__copy">Built with ❤️ for the Ruby community</p>
|
|
586
|
+
<p class="tma-footer__copy">Built with ❤️ for the Ruby community. Mijo Kristo</p>
|
|
183
587
|
</div>
|
|
184
588
|
<ul class="tma-footer__links">
|
|
185
589
|
<li><a href="https://github.com/stokry/vectra">GitHub</a></li>
|
data/docs/_layouts/page.html
CHANGED
|
@@ -5,15 +5,34 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<meta name="description" content="{{ page.description | default: site.description }}">
|
|
7
7
|
<title>{{ page.title }} - {{ site.title }}</title>
|
|
8
|
+
|
|
9
|
+
<!-- Primary styles -->
|
|
8
10
|
<link rel="stylesheet" href="{{ site.baseurl }}/assets/style.css">
|
|
9
|
-
|
|
11
|
+
|
|
12
|
+
<!-- Favicon -->
|
|
13
|
+
<link rel="icon" type="image/svg+xml" href="{{ site.baseurl }}/assets/favicon.svg">
|
|
14
|
+
|
|
15
|
+
<!-- SEO Meta -->
|
|
16
|
+
<meta property="og:title" content="{{ page.title | default: site.title }}">
|
|
17
|
+
<meta property="og:description" content="{{ page.description | default: site.description }}">
|
|
18
|
+
<meta property="og:type" content="website">
|
|
19
|
+
<meta property="og:url" content="{{ page.url | absolute_url }}">
|
|
20
|
+
<meta property="og:image" content="{{ site.url }}{{ site.baseurl }}/assets/seo.png">
|
|
21
|
+
|
|
22
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
23
|
+
<meta name="twitter:title" content="{{ page.title | default: site.title }}">
|
|
24
|
+
<meta name="twitter:description" content="{{ page.description | default: site.description }}">
|
|
25
|
+
<meta name="twitter:image" content="{{ site.url }}{{ site.baseurl }}/assets/seo.png">
|
|
26
|
+
|
|
10
27
|
<script defer src="https://umami-production-dfb8.up.railway.app/script.js" data-website-id="07e5420c-12d1-4e3c-9dbd-5cecb15a878f"></script>
|
|
11
28
|
</head>
|
|
12
29
|
<body>
|
|
13
30
|
<!-- Header -->
|
|
14
31
|
<header class="tma-header">
|
|
15
32
|
<nav class="tma-nav">
|
|
16
|
-
<a href="{{ site.baseurl }}/" class="tma-nav__brand">
|
|
33
|
+
<a href="{{ site.baseurl }}/" class="tma-nav__brand">
|
|
34
|
+
<img src="{{ site.baseurl }}/assets/logo.svg" alt="Vectra" class="tma-nav__logo">
|
|
35
|
+
</a>
|
|
17
36
|
<button class="tma-nav__toggle" aria-label="Toggle menu" aria-expanded="false">
|
|
18
37
|
<span class="tma-nav__toggle-line"></span>
|
|
19
38
|
<span class="tma-nav__toggle-line"></span>
|
|
@@ -78,6 +97,23 @@
|
|
|
78
97
|
{{ content }}
|
|
79
98
|
</main>
|
|
80
99
|
</div>
|
|
100
|
+
|
|
101
|
+
<!-- Footer -->
|
|
102
|
+
<footer class="tma-footer">
|
|
103
|
+
<div class="tma-footer__container">
|
|
104
|
+
<div>
|
|
105
|
+
<span class="tma-footer__brand">◆ Vectra</span>
|
|
106
|
+
<p class="tma-footer__copy">Built with ❤️ for the Ruby community. Mijo Kristo</p>
|
|
107
|
+
</div>
|
|
108
|
+
<ul class="tma-footer__links">
|
|
109
|
+
<li><a href="https://github.com/stokry/vectra">GitHub</a></li>
|
|
110
|
+
<li><a href="https://rubygems.org/gems/vectra-client">RubyGems</a></li>
|
|
111
|
+
<li><a href="{{ site.baseurl }}/community/contributing">Contributing</a></li>
|
|
112
|
+
<li><a href="https://github.com/stokry/vectra/blob/main/LICENSE">MIT License</a></li>
|
|
113
|
+
</ul>
|
|
114
|
+
</div>
|
|
115
|
+
</footer>
|
|
116
|
+
|
|
81
117
|
<script>
|
|
82
118
|
document.addEventListener('DOMContentLoaded', function() {
|
|
83
119
|
const navToggle = document.querySelector('.tma-nav__toggle');
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 547 530" width="547" height="530">
|
|
2
|
+
<style>
|
|
3
|
+
.s0 { fill: #e19e96 }
|
|
4
|
+
</style>
|
|
5
|
+
<g id="<Group>">
|
|
6
|
+
<path id="<Path>" class="s0" d="m302.63 267.36l60.3-92.84-36.95-31.87-129.22-0.11-36.83 31.65 142.59 214.49 151.57-226.73-102.4-88.31-180.51-0.17-102.56 88.12 192.48 282.25-0.07 69.1-243.94-358.43 134.2-115.32 220.34 0.2 133.98 115.56-203.2 303.99-194.01-291.84 68.48-58.84 169.04 0.16 68.19 58.81-111.07 172.66-0.47-0.73z"/>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1419 530" width="1419" height="530">
|
|
2
|
+
<style>
|
|
3
|
+
.s0 { fill: #e19e96 }
|
|
4
|
+
.s1 { fill: #e19e95 }
|
|
5
|
+
</style>
|
|
6
|
+
<g id="<Group>">
|
|
7
|
+
<path id="<Path>" class="s0" d="m325.63 264.36l60.3-92.84-36.95-31.87-129.22-0.11-36.83 31.65 142.59 214.49 151.57-226.73-102.4-88.31-180.51-0.17-102.56 88.12 192.48 282.25-0.07 69.1-243.94-358.43 134.2-115.32 220.34 0.2 133.98 115.56-203.2 303.99-194.01-291.84 68.48-58.84 169.04 0.16 68.19 58.81-111.07 172.66-0.47-0.73z"/>
|
|
8
|
+
<path id="VECTRA" class="s1" aria-label="VECTRA" d="m632.8 320.3l-38.7-103.2-26.2 3.6 53.1 135.5h22.2l53.6-137h-26.2zm99.2 35.9l95.9 0.1-4.2-20.4h-65.7v-38.5h49l-4.2-20.7-44.8-0.1 0.1-36.9 59.9 0.1-4-20.6h-81.9zm225.8-130.9q-8.1-4.4-18.6-6.6-10.5-2.3-17.7-2.3-19.8 0-34.9 9.3-15 9-23.2 25.4-8.1 16.3-8.1 37.2-0.1 20.2 7.4 36.3 7.4 16 22.1 25.2 14.8 9.3 35.5 9.3 8.9 0.1 19.8-2.4 11.1-2.4 18.8-6.4l-9.9-19.3q-15.1 6.2-30.1 6.2-11.3 0-19.5-6.5-8.3-6.7-12.7-17.7-4.2-11.3-4.2-24.8 0-15.2 4.8-26.4 5.1-11.3 13.8-17.4 8.7-6 19.5-6 6.9 0 11.5 1 4.7 0.8 12.5 3.3l5.1 1.4zm137.5 14.6l-4.2-20.5-110.9-0.1v20.5h41.7l-0.1 116.6h26.4l0.1-116.5zm35.3-20.6l-0.1 137.1h26l0.1-52 24.6 0.1 29 52h27.8l-33.6-58.9q10.7-5.2 16.9-14.5 6.5-9.2 6.5-21.5 0-20.6-15.3-31.3-15.1-10.9-38.9-10.9zm42.1 21.8q27.4 0 27.4 21.6 0 10.5-7.5 15.5-7.2 4.8-19.5 4.8h-16.6l0.1-41.9zm161.1-21.6l-22.2-0.1-53.5 137.1h26.2l12.1-32.3 52.1 0.1 12.2 34.3 26.2-3.6zm-11.7 35.8l18.3 47.8h-36.3z"/>
|
|
9
|
+
</g>
|
|
10
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
data/docs/assets/seo.png
ADDED
|
Binary file
|