vectra-client 0.2.1 → 0.3.0
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/.rubocop.yml +77 -37
- data/CHANGELOG.md +49 -6
- data/README.md +52 -393
- data/docs/Gemfile +9 -0
- data/docs/_config.yml +37 -0
- data/docs/_layouts/default.html +14 -0
- data/docs/_layouts/home.html +187 -0
- data/docs/_layouts/page.html +82 -0
- data/docs/_site/api/overview/index.html +145 -0
- data/docs/_site/assets/main.css +649 -0
- data/docs/_site/assets/main.css.map +1 -0
- data/docs/_site/assets/minima-social-icons.svg +33 -0
- data/docs/_site/assets/style.css +295 -0
- data/docs/_site/community/contributing/index.html +110 -0
- data/docs/_site/examples/basic-usage/index.html +117 -0
- data/docs/_site/examples/index.html +58 -0
- data/docs/_site/feed.xml +1 -0
- data/docs/_site/guides/getting-started/index.html +106 -0
- data/docs/_site/guides/installation/index.html +82 -0
- data/docs/_site/index.html +92 -0
- data/docs/_site/providers/index.html +119 -0
- data/docs/_site/providers/pgvector/index.html +155 -0
- data/docs/_site/providers/pinecone/index.html +121 -0
- data/docs/_site/providers/qdrant/index.html +124 -0
- data/docs/_site/providers/weaviate/index.html +123 -0
- data/docs/_site/robots.txt +1 -0
- data/docs/_site/sitemap.xml +39 -0
- data/docs/api/overview.md +126 -0
- data/docs/assets/style.css +927 -0
- data/docs/community/contributing.md +89 -0
- data/docs/examples/basic-usage.md +102 -0
- data/docs/examples/index.md +54 -0
- data/docs/guides/getting-started.md +90 -0
- data/docs/guides/installation.md +67 -0
- data/docs/guides/performance.md +200 -0
- data/docs/index.md +37 -0
- data/docs/providers/index.md +81 -0
- data/docs/providers/pgvector.md +95 -0
- data/docs/providers/pinecone.md +72 -0
- data/docs/providers/qdrant.md +73 -0
- data/docs/providers/weaviate.md +72 -0
- data/lib/vectra/batch.rb +148 -0
- data/lib/vectra/cache.rb +261 -0
- data/lib/vectra/configuration.rb +6 -1
- data/lib/vectra/pool.rb +256 -0
- data/lib/vectra/streaming.rb +153 -0
- data/lib/vectra/version.rb +1 -1
- data/lib/vectra.rb +4 -0
- data/netlify.toml +12 -0
- metadata +58 -5
- data/IMPLEMENTATION_GUIDE.md +0 -686
- data/NEW_FEATURES_v0.2.0.md +0 -459
- data/RELEASE_CHECKLIST_v0.2.0.md +0 -383
- data/USAGE_EXAMPLES.md +0 -787
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<meta name="description" content="{{ site.description }}">
|
|
7
|
+
<title>{{ page.title }} - {{ site.title }}</title>
|
|
8
|
+
<link rel="stylesheet" href="{{ site.baseurl }}/assets/style.css">
|
|
9
|
+
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>◆</text></svg>">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<!-- Header -->
|
|
13
|
+
<header class="tma-header">
|
|
14
|
+
<nav class="tma-nav">
|
|
15
|
+
<a href="{{ site.baseurl }}/" class="tma-nav__brand">Vectra</a>
|
|
16
|
+
<ul class="tma-nav__menu">
|
|
17
|
+
<li><a href="{{ site.baseurl }}/guides/getting-started" class="tma-nav__link">Getting Started</a></li>
|
|
18
|
+
<li><a href="{{ site.baseurl }}/providers" class="tma-nav__link">Providers</a></li>
|
|
19
|
+
<li><a href="{{ site.baseurl }}/api/overview" class="tma-nav__link">API</a></li>
|
|
20
|
+
<li><a href="{{ site.baseurl }}/examples" class="tma-nav__link">Examples</a></li>
|
|
21
|
+
<li><a href="https://github.com/stokry/vectra" target="_blank" class="tma-nav__link tma-nav__link--github">
|
|
22
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
|
|
23
|
+
GitHub
|
|
24
|
+
</a></li>
|
|
25
|
+
</ul>
|
|
26
|
+
</nav>
|
|
27
|
+
</header>
|
|
28
|
+
|
|
29
|
+
<!-- Hero Section -->
|
|
30
|
+
<section class="tma-hero">
|
|
31
|
+
<div class="tma-hero__container">
|
|
32
|
+
<span class="tma-hero__badge">v0.2.2 — Qdrant & Weaviate Support</span>
|
|
33
|
+
<h1 class="tma-hero__title">
|
|
34
|
+
Vector Databases,<br>
|
|
35
|
+
<span class="tma-hero__title-gradient">Unified for Ruby.</span>
|
|
36
|
+
</h1>
|
|
37
|
+
<p class="tma-hero__subtitle">
|
|
38
|
+
A powerful, unified Ruby client for vector databases. Build AI-powered search,
|
|
39
|
+
RAG applications, and recommendation systems with a single, elegant API.
|
|
40
|
+
</p>
|
|
41
|
+
<div class="tma-hero__actions">
|
|
42
|
+
<a href="{{ site.baseurl }}/guides/getting-started" class="tma-btn tma-btn--primary">
|
|
43
|
+
Get Started →
|
|
44
|
+
</a>
|
|
45
|
+
<a href="https://github.com/stokry/vectra" class="tma-btn tma-btn--secondary">
|
|
46
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
|
|
47
|
+
View on GitHub
|
|
48
|
+
</a>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<!-- Install Command -->
|
|
52
|
+
<div class="tma-install" style="max-width: 400px; margin: 2rem auto 0;">
|
|
53
|
+
<span class="tma-install__prefix">$</span>
|
|
54
|
+
<span class="tma-install__command">gem install vectra-client</span>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</section>
|
|
58
|
+
|
|
59
|
+
<!-- Features Section -->
|
|
60
|
+
<section class="tma-features">
|
|
61
|
+
<div class="tma-features__grid">
|
|
62
|
+
<div class="tma-feature-card">
|
|
63
|
+
<span class="tma-feature-card__icon">🔌</span>
|
|
64
|
+
<h3 class="tma-feature-card__title">Provider Agnostic</h3>
|
|
65
|
+
<p class="tma-feature-card__description">
|
|
66
|
+
Switch between Pinecone, Qdrant, Weaviate, or pgvector with a single line change. No vendor lock-in.
|
|
67
|
+
</p>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="tma-feature-card">
|
|
70
|
+
<span class="tma-feature-card__icon">🚀</span>
|
|
71
|
+
<h3 class="tma-feature-card__title">Production Ready</h3>
|
|
72
|
+
<p class="tma-feature-card__description">
|
|
73
|
+
Built for Ruby 3.2+ with comprehensive test coverage (95%+), retry logic, and circuit breakers.
|
|
74
|
+
</p>
|
|
75
|
+
</div>
|
|
76
|
+
<div class="tma-feature-card">
|
|
77
|
+
<span class="tma-feature-card__icon">📈</span>
|
|
78
|
+
<h3 class="tma-feature-card__title">Observable</h3>
|
|
79
|
+
<p class="tma-feature-card__description">
|
|
80
|
+
Native instrumentation for Datadog and New Relic. Track latency, throughput, and errors.
|
|
81
|
+
</p>
|
|
82
|
+
</div>
|
|
83
|
+
<div class="tma-feature-card">
|
|
84
|
+
<span class="tma-feature-card__icon">🏗️</span>
|
|
85
|
+
<h3 class="tma-feature-card__title">Rails Ready</h3>
|
|
86
|
+
<p class="tma-feature-card__description">
|
|
87
|
+
Seamless ActiveRecord integration with has_vector DSL and automatic migration support.
|
|
88
|
+
</p>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="tma-feature-card">
|
|
91
|
+
<span class="tma-feature-card__icon">🔄</span>
|
|
92
|
+
<h3 class="tma-feature-card__title">Resilient</h3>
|
|
93
|
+
<p class="tma-feature-card__description">
|
|
94
|
+
Built-in retry logic with exponential backoff, jitter, and intelligent error recovery.
|
|
95
|
+
</p>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="tma-feature-card">
|
|
98
|
+
<span class="tma-feature-card__icon">📚</span>
|
|
99
|
+
<h3 class="tma-feature-card__title">Well Documented</h3>
|
|
100
|
+
<p class="tma-feature-card__description">
|
|
101
|
+
Extensive YARD documentation, comprehensive examples, and detailed provider guides.
|
|
102
|
+
</p>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
</section>
|
|
106
|
+
|
|
107
|
+
<!-- Providers Section -->
|
|
108
|
+
<section class="tma-providers">
|
|
109
|
+
<div class="tma-section-header">
|
|
110
|
+
<h2 class="tma-section-header__title">Supported Providers</h2>
|
|
111
|
+
<p class="tma-section-header__subtitle">Choose your vector database. We handle the rest.</p>
|
|
112
|
+
</div>
|
|
113
|
+
<div class="tma-providers__grid">
|
|
114
|
+
<a href="{{ site.baseurl }}/providers/pinecone" class="tma-provider-card">
|
|
115
|
+
<div class="tma-provider-card__header">
|
|
116
|
+
<div class="tma-provider-card__icon">🌲</div>
|
|
117
|
+
<span class="tma-provider-card__name">Pinecone</span>
|
|
118
|
+
<span class="tma-provider-card__badge">Supported</span>
|
|
119
|
+
</div>
|
|
120
|
+
<p class="tma-provider-card__description">
|
|
121
|
+
Fully managed vector database in the cloud. Perfect for production workloads with minimal ops.
|
|
122
|
+
</p>
|
|
123
|
+
<span class="tma-provider-card__link">View Guide</span>
|
|
124
|
+
</a>
|
|
125
|
+
<a href="{{ site.baseurl }}/providers/qdrant" class="tma-provider-card">
|
|
126
|
+
<div class="tma-provider-card__header">
|
|
127
|
+
<div class="tma-provider-card__icon">🔷</div>
|
|
128
|
+
<span class="tma-provider-card__name">Qdrant</span>
|
|
129
|
+
<span class="tma-provider-card__badge">Supported</span>
|
|
130
|
+
</div>
|
|
131
|
+
<p class="tma-provider-card__description">
|
|
132
|
+
Open-source vector database with advanced filtering. Self-host or use Qdrant Cloud.
|
|
133
|
+
</p>
|
|
134
|
+
<span class="tma-provider-card__link">View Guide</span>
|
|
135
|
+
</a>
|
|
136
|
+
<a href="{{ site.baseurl }}/providers/weaviate" class="tma-provider-card">
|
|
137
|
+
<div class="tma-provider-card__header">
|
|
138
|
+
<div class="tma-provider-card__icon">🔮</div>
|
|
139
|
+
<span class="tma-provider-card__name">Weaviate</span>
|
|
140
|
+
<span class="tma-provider-card__badge">Supported</span>
|
|
141
|
+
</div>
|
|
142
|
+
<p class="tma-provider-card__description">
|
|
143
|
+
AI-native vector database with built-in vectorizers and GraphQL API.
|
|
144
|
+
</p>
|
|
145
|
+
<span class="tma-provider-card__link">View Guide</span>
|
|
146
|
+
</a>
|
|
147
|
+
<a href="{{ site.baseurl }}/providers/pgvector" class="tma-provider-card">
|
|
148
|
+
<div class="tma-provider-card__header">
|
|
149
|
+
<div class="tma-provider-card__icon">🐘</div>
|
|
150
|
+
<span class="tma-provider-card__name">pgvector</span>
|
|
151
|
+
<span class="tma-provider-card__badge">Supported</span>
|
|
152
|
+
</div>
|
|
153
|
+
<p class="tma-provider-card__description">
|
|
154
|
+
Vector similarity search in PostgreSQL. Use your existing database infrastructure.
|
|
155
|
+
</p>
|
|
156
|
+
<span class="tma-provider-card__link">View Guide</span>
|
|
157
|
+
</a>
|
|
158
|
+
</div>
|
|
159
|
+
</section>
|
|
160
|
+
|
|
161
|
+
<!-- Quick Start Code Section -->
|
|
162
|
+
<section class="tma-code-section">
|
|
163
|
+
<div class="tma-section-header">
|
|
164
|
+
<h2 class="tma-section-header__title">Quick Start</h2>
|
|
165
|
+
<p class="tma-section-header__subtitle">Get up and running in minutes</p>
|
|
166
|
+
</div>
|
|
167
|
+
|
|
168
|
+
{{ content }}
|
|
169
|
+
</section>
|
|
170
|
+
|
|
171
|
+
<!-- Footer -->
|
|
172
|
+
<footer class="tma-footer">
|
|
173
|
+
<div class="tma-footer__container">
|
|
174
|
+
<div>
|
|
175
|
+
<span class="tma-footer__brand">◆ Vectra</span>
|
|
176
|
+
<p class="tma-footer__copy">Built with ❤️ for the Ruby community</p>
|
|
177
|
+
</div>
|
|
178
|
+
<ul class="tma-footer__links">
|
|
179
|
+
<li><a href="https://github.com/stokry/vectra">GitHub</a></li>
|
|
180
|
+
<li><a href="https://rubygems.org/gems/vectra-client">RubyGems</a></li>
|
|
181
|
+
<li><a href="{{ site.baseurl }}/community/contributing">Contributing</a></li>
|
|
182
|
+
<li><a href="https://github.com/stokry/vectra/blob/main/LICENSE">MIT License</a></li>
|
|
183
|
+
</ul>
|
|
184
|
+
</div>
|
|
185
|
+
</footer>
|
|
186
|
+
</body>
|
|
187
|
+
</html>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<meta name="description" content="{{ page.description | default: site.description }}">
|
|
7
|
+
<title>{{ page.title }} - {{ site.title }}</title>
|
|
8
|
+
<link rel="stylesheet" href="{{ site.baseurl }}/assets/style.css">
|
|
9
|
+
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>◆</text></svg>">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<!-- Header -->
|
|
13
|
+
<header class="tma-header">
|
|
14
|
+
<nav class="tma-nav">
|
|
15
|
+
<a href="{{ site.baseurl }}/" class="tma-nav__brand">Vectra</a>
|
|
16
|
+
<ul class="tma-nav__menu">
|
|
17
|
+
<li><a href="{{ site.baseurl }}/guides/getting-started" class="tma-nav__link">Getting Started</a></li>
|
|
18
|
+
<li><a href="{{ site.baseurl }}/providers" class="tma-nav__link">Providers</a></li>
|
|
19
|
+
<li><a href="{{ site.baseurl }}/api/overview" class="tma-nav__link">API</a></li>
|
|
20
|
+
<li><a href="{{ site.baseurl }}/examples" class="tma-nav__link">Examples</a></li>
|
|
21
|
+
<li><a href="https://github.com/stokry/vectra" target="_blank" class="tma-nav__link tma-nav__link--github">
|
|
22
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
|
|
23
|
+
GitHub
|
|
24
|
+
</a></li>
|
|
25
|
+
</ul>
|
|
26
|
+
</nav>
|
|
27
|
+
</header>
|
|
28
|
+
|
|
29
|
+
<div class="tma-docs-layout">
|
|
30
|
+
<!-- Sidebar -->
|
|
31
|
+
<aside class="tma-sidebar">
|
|
32
|
+
<div class="tma-sidebar__section">
|
|
33
|
+
<h3 class="tma-sidebar__title">Getting Started</h3>
|
|
34
|
+
<ul class="tma-sidebar__list">
|
|
35
|
+
<li><a href="{{ site.baseurl }}/guides/installation" class="tma-sidebar__link {% if page.url == '/guides/installation/' %}tma-sidebar__link--active{% endif %}">Installation</a></li>
|
|
36
|
+
<li><a href="{{ site.baseurl }}/guides/getting-started" class="tma-sidebar__link {% if page.url == '/guides/getting-started/' %}tma-sidebar__link--active{% endif %}">Quick Start</a></li>
|
|
37
|
+
<li><a href="{{ site.baseurl }}/guides/performance" class="tma-sidebar__link {% if page.url == '/guides/performance/' %}tma-sidebar__link--active{% endif %}">Performance</a></li>
|
|
38
|
+
</ul>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div class="tma-sidebar__section">
|
|
42
|
+
<h3 class="tma-sidebar__title">Providers</h3>
|
|
43
|
+
<ul class="tma-sidebar__list">
|
|
44
|
+
<li><a href="{{ site.baseurl }}/providers" class="tma-sidebar__link {% if page.url == '/providers/' %}tma-sidebar__link--active{% endif %}">Overview</a></li>
|
|
45
|
+
<li><a href="{{ site.baseurl }}/providers/pinecone" class="tma-sidebar__link {% if page.url == '/providers/pinecone/' %}tma-sidebar__link--active{% endif %}">Pinecone</a></li>
|
|
46
|
+
<li><a href="{{ site.baseurl }}/providers/qdrant" class="tma-sidebar__link {% if page.url == '/providers/qdrant/' %}tma-sidebar__link--active{% endif %}">Qdrant</a></li>
|
|
47
|
+
<li><a href="{{ site.baseurl }}/providers/weaviate" class="tma-sidebar__link {% if page.url == '/providers/weaviate/' %}tma-sidebar__link--active{% endif %}">Weaviate</a></li>
|
|
48
|
+
<li><a href="{{ site.baseurl }}/providers/pgvector" class="tma-sidebar__link {% if page.url == '/providers/pgvector/' %}tma-sidebar__link--active{% endif %}">pgvector</a></li>
|
|
49
|
+
</ul>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<div class="tma-sidebar__section">
|
|
53
|
+
<h3 class="tma-sidebar__title">API Reference</h3>
|
|
54
|
+
<ul class="tma-sidebar__list">
|
|
55
|
+
<li><a href="{{ site.baseurl }}/api/overview" class="tma-sidebar__link {% if page.url == '/api/overview/' %}tma-sidebar__link--active{% endif %}">Overview</a></li>
|
|
56
|
+
</ul>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div class="tma-sidebar__section">
|
|
60
|
+
<h3 class="tma-sidebar__title">Examples</h3>
|
|
61
|
+
<ul class="tma-sidebar__list">
|
|
62
|
+
<li><a href="{{ site.baseurl }}/examples" class="tma-sidebar__link {% if page.url == '/examples/' %}tma-sidebar__link--active{% endif %}">Overview</a></li>
|
|
63
|
+
<li><a href="{{ site.baseurl }}/examples/basic-usage" class="tma-sidebar__link {% if page.url == '/examples/basic-usage/' %}tma-sidebar__link--active{% endif %}">Basic Usage</a></li>
|
|
64
|
+
</ul>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class="tma-sidebar__section">
|
|
68
|
+
<h3 class="tma-sidebar__title">Community</h3>
|
|
69
|
+
<ul class="tma-sidebar__list">
|
|
70
|
+
<li><a href="{{ site.baseurl }}/community/contributing" class="tma-sidebar__link {% if page.url == '/community/contributing/' %}tma-sidebar__link--active{% endif %}">Contributing</a></li>
|
|
71
|
+
<li><a href="https://github.com/stokry/vectra/issues" class="tma-sidebar__link" target="_blank">Report Issue ↗</a></li>
|
|
72
|
+
</ul>
|
|
73
|
+
</div>
|
|
74
|
+
</aside>
|
|
75
|
+
|
|
76
|
+
<!-- Main Content -->
|
|
77
|
+
<main class="tma-docs-content tma-content">
|
|
78
|
+
{{ content }}
|
|
79
|
+
</main>
|
|
80
|
+
</div>
|
|
81
|
+
</body>
|
|
82
|
+
</html>
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
<head>
|
|
2
|
+
<meta charset="utf-8">
|
|
3
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
4
|
+
<title>API Overview - Vectra Documentation</title>
|
|
5
|
+
<link rel="stylesheet" href="/assets/style.css">
|
|
6
|
+
</head>
|
|
7
|
+
|
|
8
|
+
<body>
|
|
9
|
+
<div class="site-header">
|
|
10
|
+
<nav class="site-nav">
|
|
11
|
+
<div class="nav-container">
|
|
12
|
+
<a href="/" class="nav-brand">Vectra</a>
|
|
13
|
+
<ul class="nav-menu">
|
|
14
|
+
<li><a href="/guides/installation" class="nav-link">Guides</a></li>
|
|
15
|
+
<li><a href="/api/overview" class="nav-link">API</a></li>
|
|
16
|
+
<li><a href="/providers" class="nav-link">Providers</a></li>
|
|
17
|
+
<li><a href="/examples" class="nav-link">Examples</a></li>
|
|
18
|
+
<li><a href="https://github.com/stokry/vectra" target="_blank" class="nav-link">GitHub</a></li>
|
|
19
|
+
</ul>
|
|
20
|
+
</div>
|
|
21
|
+
</nav>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<h1 id="api-reference">API Reference</h1>
|
|
25
|
+
|
|
26
|
+
<h2 id="client-initialization">Client Initialization</h2>
|
|
27
|
+
|
|
28
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Vectra</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span>
|
|
29
|
+
<span class="ss">provider: :pinecone</span><span class="p">,</span> <span class="c1"># Required: :pinecone, :qdrant, :weaviate, :pgvector</span>
|
|
30
|
+
<span class="ss">api_key: </span><span class="s1">'your-api-key'</span><span class="p">,</span> <span class="c1"># Required for cloud providers</span>
|
|
31
|
+
<span class="ss">index_name: </span><span class="s1">'my-index'</span><span class="p">,</span> <span class="c1"># Optional, provider-dependent</span>
|
|
32
|
+
<span class="ss">host: </span><span class="s1">'localhost'</span><span class="p">,</span> <span class="c1"># For self-hosted providers</span>
|
|
33
|
+
<span class="ss">port: </span><span class="mi">6333</span><span class="p">,</span> <span class="c1"># For self-hosted providers</span>
|
|
34
|
+
<span class="ss">environment: </span><span class="s1">'us-west-4'</span> <span class="c1"># For Pinecone</span>
|
|
35
|
+
<span class="p">)</span>
|
|
36
|
+
</code></pre></div></div>
|
|
37
|
+
|
|
38
|
+
<h2 id="core-methods">Core Methods</h2>
|
|
39
|
+
|
|
40
|
+
<h3 id="upsertvectors"><code class="language-plaintext highlighter-rouge">upsert(vectors:)</code></h3>
|
|
41
|
+
|
|
42
|
+
<p>Upsert vectors into the index. If a vector with the same ID exists, it will be updated.</p>
|
|
43
|
+
|
|
44
|
+
<p><strong>Parameters:</strong></p>
|
|
45
|
+
<ul>
|
|
46
|
+
<li><code class="language-plaintext highlighter-rouge">vectors</code> (Array) - Array of vector hashes</li>
|
|
47
|
+
</ul>
|
|
48
|
+
|
|
49
|
+
<p><strong>Vector Hash:</strong></p>
|
|
50
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span>
|
|
51
|
+
<span class="ss">id: </span><span class="s1">'unique-id'</span><span class="p">,</span> <span class="c1"># Required</span>
|
|
52
|
+
<span class="ss">values: </span><span class="p">[</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">],</span> <span class="c1"># Required</span>
|
|
53
|
+
<span class="ss">metadata: </span><span class="p">{</span> <span class="ss">key: </span><span class="s1">'value'</span> <span class="p">}</span> <span class="c1"># Optional</span>
|
|
54
|
+
<span class="p">}</span>
|
|
55
|
+
</code></pre></div></div>
|
|
56
|
+
|
|
57
|
+
<p><strong>Example:</strong></p>
|
|
58
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">client</span><span class="p">.</span><span class="nf">upsert</span><span class="p">(</span>
|
|
59
|
+
<span class="ss">vectors: </span><span class="p">[</span>
|
|
60
|
+
<span class="p">{</span> <span class="ss">id: </span><span class="s1">'1'</span><span class="p">,</span> <span class="ss">values: </span><span class="p">[</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">],</span> <span class="ss">metadata: </span><span class="p">{</span> <span class="ss">category: </span><span class="s1">'news'</span> <span class="p">}</span> <span class="p">}</span>
|
|
61
|
+
<span class="p">]</span>
|
|
62
|
+
<span class="p">)</span>
|
|
63
|
+
</code></pre></div></div>
|
|
64
|
+
|
|
65
|
+
<h3 id="queryvector-top_k-include_metadata"><code class="language-plaintext highlighter-rouge">query(vector:, top_k:, include_metadata:)</code></h3>
|
|
66
|
+
|
|
67
|
+
<p>Search for similar vectors.</p>
|
|
68
|
+
|
|
69
|
+
<p><strong>Parameters:</strong></p>
|
|
70
|
+
<ul>
|
|
71
|
+
<li><code class="language-plaintext highlighter-rouge">vector</code> (Array) - Query vector</li>
|
|
72
|
+
<li><code class="language-plaintext highlighter-rouge">top_k</code> (Integer) - Number of results to return (default: 10)</li>
|
|
73
|
+
<li><code class="language-plaintext highlighter-rouge">include_metadata</code> (Boolean) - Include metadata in results (default: true)</li>
|
|
74
|
+
</ul>
|
|
75
|
+
|
|
76
|
+
<p><strong>Returns:</strong></p>
|
|
77
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="no">Vectra</span><span class="o">::</span><span class="no">QueryResult</span> <span class="p">{</span>
|
|
78
|
+
<span class="ss">matches: </span><span class="p">[</span>
|
|
79
|
+
<span class="p">{</span> <span class="ss">id: </span><span class="s1">'1'</span><span class="p">,</span> <span class="ss">score: </span><span class="mf">0.95</span><span class="p">,</span> <span class="ss">metadata: </span><span class="p">{</span><span class="o">...</span><span class="p">}</span> <span class="p">},</span>
|
|
80
|
+
<span class="o">...</span>
|
|
81
|
+
<span class="p">],</span>
|
|
82
|
+
<span class="ss">namespace: </span><span class="s1">'default'</span>
|
|
83
|
+
<span class="p">}</span>
|
|
84
|
+
</code></pre></div></div>
|
|
85
|
+
|
|
86
|
+
<p><strong>Example:</strong></p>
|
|
87
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">results</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="nf">query</span><span class="p">(</span><span class="ss">vector: </span><span class="p">[</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">],</span> <span class="ss">top_k: </span><span class="mi">5</span><span class="p">)</span>
|
|
88
|
+
</code></pre></div></div>
|
|
89
|
+
|
|
90
|
+
<h3 id="deleteids"><code class="language-plaintext highlighter-rouge">delete(ids:)</code></h3>
|
|
91
|
+
|
|
92
|
+
<p>Delete vectors by IDs.</p>
|
|
93
|
+
|
|
94
|
+
<p><strong>Parameters:</strong></p>
|
|
95
|
+
<ul>
|
|
96
|
+
<li><code class="language-plaintext highlighter-rouge">ids</code> (Array) - Array of vector IDs to delete</li>
|
|
97
|
+
</ul>
|
|
98
|
+
|
|
99
|
+
<p><strong>Example:</strong></p>
|
|
100
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">client</span><span class="p">.</span><span class="nf">delete</span><span class="p">(</span><span class="ss">ids: </span><span class="p">[</span><span class="s1">'vec-1'</span><span class="p">,</span> <span class="s1">'vec-2'</span><span class="p">])</span>
|
|
101
|
+
</code></pre></div></div>
|
|
102
|
+
|
|
103
|
+
<h3 id="fetchids"><code class="language-plaintext highlighter-rouge">fetch(ids:)</code></h3>
|
|
104
|
+
|
|
105
|
+
<p>Fetch vectors by IDs.</p>
|
|
106
|
+
|
|
107
|
+
<p><strong>Parameters:</strong></p>
|
|
108
|
+
<ul>
|
|
109
|
+
<li><code class="language-plaintext highlighter-rouge">ids</code> (Array) - Array of vector IDs</li>
|
|
110
|
+
</ul>
|
|
111
|
+
|
|
112
|
+
<p><strong>Returns:</strong></p>
|
|
113
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span>
|
|
114
|
+
<span class="s1">'vec-1'</span> <span class="o">=></span> <span class="p">{</span> <span class="ss">values: </span><span class="p">[</span><span class="o">...</span><span class="p">],</span> <span class="ss">metadata: </span><span class="p">{</span><span class="o">...</span><span class="p">}</span> <span class="p">},</span>
|
|
115
|
+
<span class="o">...</span>
|
|
116
|
+
<span class="p">}</span>
|
|
117
|
+
</code></pre></div></div>
|
|
118
|
+
|
|
119
|
+
<h3 id="stats"><code class="language-plaintext highlighter-rouge">stats</code></h3>
|
|
120
|
+
|
|
121
|
+
<p>Get index statistics.</p>
|
|
122
|
+
|
|
123
|
+
<p><strong>Returns:</strong></p>
|
|
124
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span>
|
|
125
|
+
<span class="s1">'dimension'</span> <span class="o">=></span> <span class="mi">1536</span><span class="p">,</span>
|
|
126
|
+
<span class="s1">'vector_count'</span> <span class="o">=></span> <span class="mi">1000</span><span class="p">,</span>
|
|
127
|
+
<span class="s1">'index_fullness'</span> <span class="o">=></span> <span class="mf">0.8</span>
|
|
128
|
+
<span class="p">}</span>
|
|
129
|
+
</code></pre></div></div>
|
|
130
|
+
|
|
131
|
+
<h2 id="error-handling">Error Handling</h2>
|
|
132
|
+
|
|
133
|
+
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">begin</span>
|
|
134
|
+
<span class="n">client</span><span class="p">.</span><span class="nf">query</span><span class="p">(</span><span class="ss">vector: </span><span class="p">[</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">])</span>
|
|
135
|
+
<span class="k">rescue</span> <span class="no">Vectra</span><span class="o">::</span><span class="no">Error</span> <span class="o">=></span> <span class="n">e</span>
|
|
136
|
+
<span class="nb">puts</span> <span class="s2">"Vectra error: </span><span class="si">#{</span><span class="n">e</span><span class="p">.</span><span class="nf">message</span><span class="si">}</span><span class="s2">"</span>
|
|
137
|
+
<span class="k">rescue</span> <span class="o">=></span> <span class="n">e</span>
|
|
138
|
+
<span class="nb">puts</span> <span class="s2">"Unexpected error: </span><span class="si">#{</span><span class="n">e</span><span class="p">.</span><span class="nf">message</span><span class="si">}</span><span class="s2">"</span>
|
|
139
|
+
<span class="k">end</span>
|
|
140
|
+
</code></pre></div></div>
|
|
141
|
+
|
|
142
|
+
<p>See <a href="/api/methods">Detailed API Documentation</a> for more methods.</p>
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
</body>
|