signalwire-agents 0.1.13__py3-none-any.whl → 1.0.17.dev4__py3-none-any.whl
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.
- signalwire_agents/__init__.py +99 -15
- signalwire_agents/agent_server.py +248 -60
- signalwire_agents/agents/bedrock.py +296 -0
- signalwire_agents/cli/__init__.py +9 -0
- signalwire_agents/cli/build_search.py +951 -41
- signalwire_agents/cli/config.py +80 -0
- signalwire_agents/cli/core/__init__.py +10 -0
- signalwire_agents/cli/core/agent_loader.py +470 -0
- signalwire_agents/cli/core/argparse_helpers.py +179 -0
- signalwire_agents/cli/core/dynamic_config.py +71 -0
- signalwire_agents/cli/core/service_loader.py +303 -0
- signalwire_agents/cli/dokku.py +2320 -0
- signalwire_agents/cli/execution/__init__.py +10 -0
- signalwire_agents/cli/execution/datamap_exec.py +446 -0
- signalwire_agents/cli/execution/webhook_exec.py +134 -0
- signalwire_agents/cli/init_project.py +2636 -0
- signalwire_agents/cli/output/__init__.py +10 -0
- signalwire_agents/cli/output/output_formatter.py +255 -0
- signalwire_agents/cli/output/swml_dump.py +186 -0
- signalwire_agents/cli/simulation/__init__.py +10 -0
- signalwire_agents/cli/simulation/data_generation.py +374 -0
- signalwire_agents/cli/simulation/data_overrides.py +200 -0
- signalwire_agents/cli/simulation/mock_env.py +282 -0
- signalwire_agents/cli/swaig_test_wrapper.py +52 -0
- signalwire_agents/cli/test_swaig.py +566 -2366
- signalwire_agents/cli/types.py +81 -0
- signalwire_agents/core/__init__.py +2 -2
- signalwire_agents/core/agent/__init__.py +12 -0
- signalwire_agents/core/agent/config/__init__.py +12 -0
- signalwire_agents/core/agent/deployment/__init__.py +9 -0
- signalwire_agents/core/agent/deployment/handlers/__init__.py +9 -0
- signalwire_agents/core/agent/prompt/__init__.py +14 -0
- signalwire_agents/core/agent/prompt/manager.py +306 -0
- signalwire_agents/core/agent/routing/__init__.py +9 -0
- signalwire_agents/core/agent/security/__init__.py +9 -0
- signalwire_agents/core/agent/swml/__init__.py +9 -0
- signalwire_agents/core/agent/tools/__init__.py +15 -0
- signalwire_agents/core/agent/tools/decorator.py +97 -0
- signalwire_agents/core/agent/tools/registry.py +210 -0
- signalwire_agents/core/agent_base.py +845 -2916
- signalwire_agents/core/auth_handler.py +233 -0
- signalwire_agents/core/config_loader.py +259 -0
- signalwire_agents/core/contexts.py +418 -0
- signalwire_agents/core/data_map.py +3 -15
- signalwire_agents/core/function_result.py +116 -44
- signalwire_agents/core/logging_config.py +162 -18
- signalwire_agents/core/mixins/__init__.py +28 -0
- signalwire_agents/core/mixins/ai_config_mixin.py +442 -0
- signalwire_agents/core/mixins/auth_mixin.py +280 -0
- signalwire_agents/core/mixins/prompt_mixin.py +358 -0
- signalwire_agents/core/mixins/serverless_mixin.py +460 -0
- signalwire_agents/core/mixins/skill_mixin.py +55 -0
- signalwire_agents/core/mixins/state_mixin.py +153 -0
- signalwire_agents/core/mixins/tool_mixin.py +230 -0
- signalwire_agents/core/mixins/web_mixin.py +1142 -0
- signalwire_agents/core/security_config.py +333 -0
- signalwire_agents/core/skill_base.py +84 -1
- signalwire_agents/core/skill_manager.py +62 -20
- signalwire_agents/core/swaig_function.py +18 -5
- signalwire_agents/core/swml_builder.py +207 -11
- signalwire_agents/core/swml_handler.py +27 -21
- signalwire_agents/core/swml_renderer.py +123 -312
- signalwire_agents/core/swml_service.py +171 -203
- signalwire_agents/mcp_gateway/__init__.py +29 -0
- signalwire_agents/mcp_gateway/gateway_service.py +564 -0
- signalwire_agents/mcp_gateway/mcp_manager.py +513 -0
- signalwire_agents/mcp_gateway/session_manager.py +218 -0
- signalwire_agents/prefabs/concierge.py +0 -3
- signalwire_agents/prefabs/faq_bot.py +0 -3
- signalwire_agents/prefabs/info_gatherer.py +0 -3
- signalwire_agents/prefabs/receptionist.py +0 -3
- signalwire_agents/prefabs/survey.py +0 -3
- signalwire_agents/schema.json +9218 -5489
- signalwire_agents/search/__init__.py +7 -1
- signalwire_agents/search/document_processor.py +490 -31
- signalwire_agents/search/index_builder.py +307 -37
- signalwire_agents/search/migration.py +418 -0
- signalwire_agents/search/models.py +30 -0
- signalwire_agents/search/pgvector_backend.py +748 -0
- signalwire_agents/search/query_processor.py +162 -31
- signalwire_agents/search/search_engine.py +916 -35
- signalwire_agents/search/search_service.py +376 -53
- signalwire_agents/skills/README.md +452 -0
- signalwire_agents/skills/__init__.py +14 -2
- signalwire_agents/skills/api_ninjas_trivia/README.md +215 -0
- signalwire_agents/skills/api_ninjas_trivia/__init__.py +12 -0
- signalwire_agents/skills/api_ninjas_trivia/skill.py +237 -0
- signalwire_agents/skills/datasphere/README.md +210 -0
- signalwire_agents/skills/datasphere/skill.py +84 -3
- signalwire_agents/skills/datasphere_serverless/README.md +258 -0
- signalwire_agents/skills/datasphere_serverless/__init__.py +9 -0
- signalwire_agents/skills/datasphere_serverless/skill.py +82 -1
- signalwire_agents/skills/datetime/README.md +132 -0
- signalwire_agents/skills/datetime/__init__.py +9 -0
- signalwire_agents/skills/datetime/skill.py +20 -7
- signalwire_agents/skills/joke/README.md +149 -0
- signalwire_agents/skills/joke/__init__.py +9 -0
- signalwire_agents/skills/joke/skill.py +21 -0
- signalwire_agents/skills/math/README.md +161 -0
- signalwire_agents/skills/math/__init__.py +9 -0
- signalwire_agents/skills/math/skill.py +18 -4
- signalwire_agents/skills/mcp_gateway/README.md +230 -0
- signalwire_agents/skills/mcp_gateway/__init__.py +10 -0
- signalwire_agents/skills/mcp_gateway/skill.py +421 -0
- signalwire_agents/skills/native_vector_search/README.md +210 -0
- signalwire_agents/skills/native_vector_search/__init__.py +9 -0
- signalwire_agents/skills/native_vector_search/skill.py +569 -101
- signalwire_agents/skills/play_background_file/README.md +218 -0
- signalwire_agents/skills/play_background_file/__init__.py +12 -0
- signalwire_agents/skills/play_background_file/skill.py +242 -0
- signalwire_agents/skills/registry.py +395 -40
- signalwire_agents/skills/spider/README.md +236 -0
- signalwire_agents/skills/spider/__init__.py +13 -0
- signalwire_agents/skills/spider/skill.py +598 -0
- signalwire_agents/skills/swml_transfer/README.md +395 -0
- signalwire_agents/skills/swml_transfer/__init__.py +10 -0
- signalwire_agents/skills/swml_transfer/skill.py +359 -0
- signalwire_agents/skills/weather_api/README.md +178 -0
- signalwire_agents/skills/weather_api/__init__.py +12 -0
- signalwire_agents/skills/weather_api/skill.py +191 -0
- signalwire_agents/skills/web_search/README.md +163 -0
- signalwire_agents/skills/web_search/__init__.py +9 -0
- signalwire_agents/skills/web_search/skill.py +586 -112
- signalwire_agents/skills/wikipedia_search/README.md +228 -0
- signalwire_agents/{core/state → skills/wikipedia_search}/__init__.py +5 -4
- signalwire_agents/skills/{wikipedia → wikipedia_search}/skill.py +33 -3
- signalwire_agents/web/__init__.py +17 -0
- signalwire_agents/web/web_service.py +559 -0
- signalwire_agents-1.0.17.dev4.data/data/share/man/man1/sw-agent-init.1 +400 -0
- signalwire_agents-1.0.17.dev4.data/data/share/man/man1/sw-search.1 +483 -0
- signalwire_agents-1.0.17.dev4.data/data/share/man/man1/swaig-test.1 +308 -0
- {signalwire_agents-0.1.13.dist-info → signalwire_agents-1.0.17.dev4.dist-info}/METADATA +347 -215
- signalwire_agents-1.0.17.dev4.dist-info/RECORD +147 -0
- signalwire_agents-1.0.17.dev4.dist-info/entry_points.txt +6 -0
- signalwire_agents/core/state/file_state_manager.py +0 -219
- signalwire_agents/core/state/state_manager.py +0 -101
- signalwire_agents/skills/wikipedia/__init__.py +0 -9
- signalwire_agents-0.1.13.data/data/schema.json +0 -5611
- signalwire_agents-0.1.13.dist-info/RECORD +0 -67
- signalwire_agents-0.1.13.dist-info/entry_points.txt +0 -3
- {signalwire_agents-0.1.13.dist-info → signalwire_agents-1.0.17.dev4.dist-info}/WHEEL +0 -0
- {signalwire_agents-0.1.13.dist-info → signalwire_agents-1.0.17.dev4.dist-info}/licenses/LICENSE +0 -0
- {signalwire_agents-0.1.13.dist-info → signalwire_agents-1.0.17.dev4.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
.\" Man page for sw-search
|
|
2
|
+
.\" Copyright (c) 2025 SignalWire
|
|
3
|
+
.\" Licensed under the MIT License
|
|
4
|
+
.TH SW-SEARCH 1 "November 2025" "SignalWire Agents SDK 1.0.6" "SignalWire Commands"
|
|
5
|
+
.SH NAME
|
|
6
|
+
sw-search \- build and query semantic search indexes for SignalWire AI agents
|
|
7
|
+
.SH SYNOPSIS
|
|
8
|
+
.B sw-search
|
|
9
|
+
.I sources
|
|
10
|
+
.RI [ sources... ]
|
|
11
|
+
.RI [ options ]
|
|
12
|
+
.br
|
|
13
|
+
.B sw-search
|
|
14
|
+
.B search
|
|
15
|
+
.I index_file
|
|
16
|
+
.I query
|
|
17
|
+
.RI [ options ]
|
|
18
|
+
.br
|
|
19
|
+
.B sw-search
|
|
20
|
+
.B validate
|
|
21
|
+
.I index_file
|
|
22
|
+
.br
|
|
23
|
+
.B sw-search
|
|
24
|
+
.B remote
|
|
25
|
+
.I host
|
|
26
|
+
.I query
|
|
27
|
+
.RI [ options ]
|
|
28
|
+
.br
|
|
29
|
+
.B sw-search
|
|
30
|
+
.B migrate
|
|
31
|
+
.I index_file
|
|
32
|
+
.RI [ options ]
|
|
33
|
+
.SH DESCRIPTION
|
|
34
|
+
.B sw-search
|
|
35
|
+
is a command-line tool for building semantic search indexes from documents
|
|
36
|
+
and querying them. It creates
|
|
37
|
+
.I .swsearch
|
|
38
|
+
files that can be used by SignalWire AI agents to provide knowledge-based
|
|
39
|
+
responses through the native_vector_search skill.
|
|
40
|
+
.PP
|
|
41
|
+
The tool supports multiple document formats (Markdown, text, PDF, Word, etc.),
|
|
42
|
+
various chunking strategies, and multiple storage backends including SQLite
|
|
43
|
+
and PostgreSQL with pgvector.
|
|
44
|
+
.SH COMMANDS
|
|
45
|
+
.TP
|
|
46
|
+
.BI "sw-search " "sources..."
|
|
47
|
+
Build a search index from the specified source files or directories.
|
|
48
|
+
This is the default command when no subcommand is specified.
|
|
49
|
+
.TP
|
|
50
|
+
.BI "sw-search search " "index_file query"
|
|
51
|
+
Search within an existing index file for the given query.
|
|
52
|
+
.TP
|
|
53
|
+
.BI "sw-search validate " "index_file"
|
|
54
|
+
Validate the structure and integrity of an existing index file.
|
|
55
|
+
.TP
|
|
56
|
+
.BI "sw-search remote " "host query"
|
|
57
|
+
Search via a remote search API server.
|
|
58
|
+
.TP
|
|
59
|
+
.BI "sw-search migrate " "index_file"
|
|
60
|
+
Migrate an index between storage backends.
|
|
61
|
+
.SH BUILD OPTIONS
|
|
62
|
+
.SS "Output Options"
|
|
63
|
+
.TP
|
|
64
|
+
.BI \-\-output " FILE"
|
|
65
|
+
Output file name for the search index (default: sources.swsearch).
|
|
66
|
+
For pgvector backend, this is the collection name.
|
|
67
|
+
.TP
|
|
68
|
+
.BI \-\-output\-dir " DIR"
|
|
69
|
+
Output directory for results. When used with \-\-output\-format json,
|
|
70
|
+
creates one file per source file.
|
|
71
|
+
.TP
|
|
72
|
+
.BI \-\-output\-format " FORMAT"
|
|
73
|
+
Output format:
|
|
74
|
+
.B index
|
|
75
|
+
(create search index) or
|
|
76
|
+
.B json
|
|
77
|
+
(export chunks as JSON for review).
|
|
78
|
+
Default is index.
|
|
79
|
+
.SS "Backend Options"
|
|
80
|
+
.TP
|
|
81
|
+
.BI \-\-backend " BACKEND"
|
|
82
|
+
Storage backend to use:
|
|
83
|
+
.B sqlite
|
|
84
|
+
(default) or
|
|
85
|
+
.BR pgvector .
|
|
86
|
+
.TP
|
|
87
|
+
.BI \-\-connection\-string " STRING"
|
|
88
|
+
PostgreSQL connection string for pgvector backend.
|
|
89
|
+
Format: postgresql://user:pass@host:port/database
|
|
90
|
+
.TP
|
|
91
|
+
.B \-\-overwrite
|
|
92
|
+
Overwrite existing collection (pgvector backend only).
|
|
93
|
+
.SS "Chunking Strategies"
|
|
94
|
+
.TP
|
|
95
|
+
.BI \-\-chunking\-strategy " STRATEGY"
|
|
96
|
+
Strategy for splitting documents into chunks. Available strategies:
|
|
97
|
+
.RS
|
|
98
|
+
.IP \(bu 2
|
|
99
|
+
.B sentence
|
|
100
|
+
\- Split by sentences, grouping up to N sentences per chunk (default)
|
|
101
|
+
.IP \(bu 2
|
|
102
|
+
.B sliding
|
|
103
|
+
\- Sliding window with configurable size and overlap
|
|
104
|
+
.IP \(bu 2
|
|
105
|
+
.B paragraph
|
|
106
|
+
\- Split on paragraph boundaries
|
|
107
|
+
.IP \(bu 2
|
|
108
|
+
.B page
|
|
109
|
+
\- Split on page boundaries (good for PDFs)
|
|
110
|
+
.IP \(bu 2
|
|
111
|
+
.B semantic
|
|
112
|
+
\- Group semantically similar sentences
|
|
113
|
+
.IP \(bu 2
|
|
114
|
+
.B topic
|
|
115
|
+
\- Group by topic changes
|
|
116
|
+
.IP \(bu 2
|
|
117
|
+
.B qa
|
|
118
|
+
\- Optimized for question-answering use cases
|
|
119
|
+
.IP \(bu 2
|
|
120
|
+
.B json
|
|
121
|
+
\- Read pre-chunked content from JSON files
|
|
122
|
+
.IP \(bu 2
|
|
123
|
+
.B markdown
|
|
124
|
+
\- Markdown-aware chunking that preserves headers and detects code blocks
|
|
125
|
+
.RE
|
|
126
|
+
.TP
|
|
127
|
+
.BI \-\-max\-sentences\-per\-chunk " N"
|
|
128
|
+
Maximum sentences per chunk for sentence strategy (default: 5).
|
|
129
|
+
.TP
|
|
130
|
+
.BI \-\-chunk\-size " N"
|
|
131
|
+
Chunk size in words for sliding window strategy (default: 50).
|
|
132
|
+
.TP
|
|
133
|
+
.BI \-\-overlap\-size " N"
|
|
134
|
+
Overlap size in words for sliding window strategy (default: 10).
|
|
135
|
+
.TP
|
|
136
|
+
.BI \-\-split\-newlines " N"
|
|
137
|
+
Split on N or more consecutive newlines (for sentence strategy).
|
|
138
|
+
.TP
|
|
139
|
+
.BI \-\-semantic\-threshold " FLOAT"
|
|
140
|
+
Similarity threshold for semantic chunking (default: 0.5).
|
|
141
|
+
.TP
|
|
142
|
+
.BI \-\-topic\-threshold " FLOAT"
|
|
143
|
+
Similarity threshold for topic chunking (default: 0.3).
|
|
144
|
+
.SS "Source Options"
|
|
145
|
+
.TP
|
|
146
|
+
.BI \-\-file\-types " TYPES"
|
|
147
|
+
Comma-separated file extensions to include when processing directories
|
|
148
|
+
(default: md,txt,rst).
|
|
149
|
+
.TP
|
|
150
|
+
.BI \-\-exclude " PATTERNS"
|
|
151
|
+
Comma-separated glob patterns to exclude.
|
|
152
|
+
Example: "**/test/**,**/__pycache__/**"
|
|
153
|
+
.TP
|
|
154
|
+
.BI \-\-languages " CODES"
|
|
155
|
+
Comma-separated language codes (default: en).
|
|
156
|
+
.SS "Model Options"
|
|
157
|
+
.TP
|
|
158
|
+
.BI \-\-model " MODEL"
|
|
159
|
+
Sentence transformer model name or alias. Aliases:
|
|
160
|
+
.RS
|
|
161
|
+
.IP \(bu 2
|
|
162
|
+
.B mini
|
|
163
|
+
\- sentence-transformers/all-MiniLM-L6-v2 (fastest, 384 dims)
|
|
164
|
+
.IP \(bu 2
|
|
165
|
+
.B base
|
|
166
|
+
\- sentence-transformers/all-mpnet-base-v2 (balanced, 768 dims)
|
|
167
|
+
.IP \(bu 2
|
|
168
|
+
.B large
|
|
169
|
+
\- Same as base (best quality)
|
|
170
|
+
.RE
|
|
171
|
+
.PP
|
|
172
|
+
Or specify full model name from Hugging Face.
|
|
173
|
+
.TP
|
|
174
|
+
.BI \-\-index\-nlp\-backend " BACKEND"
|
|
175
|
+
NLP backend for document processing:
|
|
176
|
+
.B nltk
|
|
177
|
+
(fast, default) or
|
|
178
|
+
.B spacy
|
|
179
|
+
(better quality, slower).
|
|
180
|
+
.SS "Metadata Options"
|
|
181
|
+
.TP
|
|
182
|
+
.BI \-\-tags " TAGS"
|
|
183
|
+
Comma-separated tags to add to all chunks.
|
|
184
|
+
.TP
|
|
185
|
+
.B \-\-verbose
|
|
186
|
+
Enable verbose output showing processing details.
|
|
187
|
+
.TP
|
|
188
|
+
.B \-\-validate
|
|
189
|
+
Validate the created index after building.
|
|
190
|
+
.SH SEARCH OPTIONS
|
|
191
|
+
.TP
|
|
192
|
+
.BI \-\-count " N"
|
|
193
|
+
Number of results to return (default: 5).
|
|
194
|
+
.TP
|
|
195
|
+
.BI \-\-tags " TAGS"
|
|
196
|
+
Filter results by tags.
|
|
197
|
+
.TP
|
|
198
|
+
.B \-\-json
|
|
199
|
+
Output results as JSON.
|
|
200
|
+
.TP
|
|
201
|
+
.B \-\-verbose
|
|
202
|
+
Show detailed result information including scores.
|
|
203
|
+
.SH REMOTE OPTIONS
|
|
204
|
+
.TP
|
|
205
|
+
.BI \-\-index\-name " NAME"
|
|
206
|
+
Index name on the remote server.
|
|
207
|
+
.TP
|
|
208
|
+
.BI \-\-count " N"
|
|
209
|
+
Number of results to return.
|
|
210
|
+
.TP
|
|
211
|
+
.B \-\-verbose
|
|
212
|
+
Show detailed results.
|
|
213
|
+
.SH MIGRATE OPTIONS
|
|
214
|
+
.TP
|
|
215
|
+
.B \-\-info
|
|
216
|
+
Show information about the index without migrating.
|
|
217
|
+
.TP
|
|
218
|
+
.B \-\-to\-pgvector
|
|
219
|
+
Migrate to PostgreSQL pgvector backend.
|
|
220
|
+
.TP
|
|
221
|
+
.BI \-\-connection\-string " STRING"
|
|
222
|
+
PostgreSQL connection string for migration target.
|
|
223
|
+
.TP
|
|
224
|
+
.BI \-\-collection\-name " NAME"
|
|
225
|
+
Collection name for pgvector migration.
|
|
226
|
+
.SH EXAMPLES
|
|
227
|
+
.SS Building Indexes
|
|
228
|
+
Basic usage with a directory:
|
|
229
|
+
.PP
|
|
230
|
+
.RS
|
|
231
|
+
.nf
|
|
232
|
+
sw-search ./docs
|
|
233
|
+
.fi
|
|
234
|
+
.RE
|
|
235
|
+
.PP
|
|
236
|
+
Multiple sources with file type filter:
|
|
237
|
+
.PP
|
|
238
|
+
.RS
|
|
239
|
+
.nf
|
|
240
|
+
sw-search ./docs ./examples README.md --file-types md,txt,py
|
|
241
|
+
.fi
|
|
242
|
+
.RE
|
|
243
|
+
.PP
|
|
244
|
+
Custom output file:
|
|
245
|
+
.PP
|
|
246
|
+
.RS
|
|
247
|
+
.nf
|
|
248
|
+
sw-search ./docs --output knowledge.swsearch
|
|
249
|
+
.fi
|
|
250
|
+
.RE
|
|
251
|
+
.SS Chunking Strategies
|
|
252
|
+
Sentence-based chunking with custom parameters:
|
|
253
|
+
.PP
|
|
254
|
+
.RS
|
|
255
|
+
.nf
|
|
256
|
+
sw-search ./docs \\
|
|
257
|
+
--chunking-strategy sentence \\
|
|
258
|
+
--max-sentences-per-chunk 10
|
|
259
|
+
.fi
|
|
260
|
+
.RE
|
|
261
|
+
.PP
|
|
262
|
+
Sliding window chunking:
|
|
263
|
+
.PP
|
|
264
|
+
.RS
|
|
265
|
+
.nf
|
|
266
|
+
sw-search ./docs \\
|
|
267
|
+
--chunking-strategy sliding \\
|
|
268
|
+
--chunk-size 100 \\
|
|
269
|
+
--overlap-size 20
|
|
270
|
+
.fi
|
|
271
|
+
.RE
|
|
272
|
+
.PP
|
|
273
|
+
Markdown-aware chunking (best for documentation with code):
|
|
274
|
+
.PP
|
|
275
|
+
.RS
|
|
276
|
+
.nf
|
|
277
|
+
sw-search ./docs \\
|
|
278
|
+
--chunking-strategy markdown \\
|
|
279
|
+
--file-types md
|
|
280
|
+
.fi
|
|
281
|
+
.RE
|
|
282
|
+
.PP
|
|
283
|
+
Semantic chunking (groups similar content):
|
|
284
|
+
.PP
|
|
285
|
+
.RS
|
|
286
|
+
.nf
|
|
287
|
+
sw-search ./docs \\
|
|
288
|
+
--chunking-strategy semantic \\
|
|
289
|
+
--semantic-threshold 0.6
|
|
290
|
+
.fi
|
|
291
|
+
.RE
|
|
292
|
+
.SS Model Selection
|
|
293
|
+
Using different embedding models:
|
|
294
|
+
.PP
|
|
295
|
+
.RS
|
|
296
|
+
.nf
|
|
297
|
+
sw-search ./docs --model mini # Fastest, good for most cases
|
|
298
|
+
sw-search ./docs --model base # Better quality, slower
|
|
299
|
+
sw-search ./docs --model sentence-transformers/all-mpnet-base-v2
|
|
300
|
+
.fi
|
|
301
|
+
.RE
|
|
302
|
+
.SS PostgreSQL pgvector Backend
|
|
303
|
+
Build directly to PostgreSQL:
|
|
304
|
+
.PP
|
|
305
|
+
.RS
|
|
306
|
+
.nf
|
|
307
|
+
sw-search ./docs \\
|
|
308
|
+
--backend pgvector \\
|
|
309
|
+
--connection-string "postgresql://user:pass@localhost:5432/db" \\
|
|
310
|
+
--output docs_collection
|
|
311
|
+
.fi
|
|
312
|
+
.RE
|
|
313
|
+
.PP
|
|
314
|
+
Overwrite existing collection:
|
|
315
|
+
.PP
|
|
316
|
+
.RS
|
|
317
|
+
.nf
|
|
318
|
+
sw-search ./docs \\
|
|
319
|
+
--backend pgvector \\
|
|
320
|
+
--connection-string "postgresql://user:pass@localhost:5432/db" \\
|
|
321
|
+
--output docs_collection \\
|
|
322
|
+
--overwrite
|
|
323
|
+
.fi
|
|
324
|
+
.RE
|
|
325
|
+
.SS Searching
|
|
326
|
+
Search within an index:
|
|
327
|
+
.PP
|
|
328
|
+
.RS
|
|
329
|
+
.nf
|
|
330
|
+
sw-search search ./docs.swsearch "how to create an agent"
|
|
331
|
+
sw-search search ./docs.swsearch "API reference" --count 3 --verbose
|
|
332
|
+
sw-search search ./docs.swsearch "configuration" --tags documentation --json
|
|
333
|
+
.fi
|
|
334
|
+
.RE
|
|
335
|
+
.PP
|
|
336
|
+
Search in pgvector collection:
|
|
337
|
+
.PP
|
|
338
|
+
.RS
|
|
339
|
+
.nf
|
|
340
|
+
sw-search search docs_collection "how to create an agent" \\
|
|
341
|
+
--backend pgvector \\
|
|
342
|
+
--connection-string "postgresql://user:pass@localhost/db"
|
|
343
|
+
.fi
|
|
344
|
+
.RE
|
|
345
|
+
.SS Remote Search
|
|
346
|
+
Search via remote API:
|
|
347
|
+
.PP
|
|
348
|
+
.RS
|
|
349
|
+
.nf
|
|
350
|
+
sw-search remote http://localhost:8001 "how to create an agent" \\
|
|
351
|
+
--index-name docs
|
|
352
|
+
.fi
|
|
353
|
+
.RE
|
|
354
|
+
.SS Exporting and Importing Chunks
|
|
355
|
+
Export chunks to JSON for review:
|
|
356
|
+
.PP
|
|
357
|
+
.RS
|
|
358
|
+
.nf
|
|
359
|
+
sw-search ./docs \\
|
|
360
|
+
--output-format json \\
|
|
361
|
+
--output all_chunks.json
|
|
362
|
+
.fi
|
|
363
|
+
.RE
|
|
364
|
+
.PP
|
|
365
|
+
Export one JSON file per source:
|
|
366
|
+
.PP
|
|
367
|
+
.RS
|
|
368
|
+
.nf
|
|
369
|
+
sw-search ./docs \\
|
|
370
|
+
--output-format json \\
|
|
371
|
+
--output-dir ./chunks/
|
|
372
|
+
.fi
|
|
373
|
+
.RE
|
|
374
|
+
.PP
|
|
375
|
+
Build index from exported JSON:
|
|
376
|
+
.PP
|
|
377
|
+
.RS
|
|
378
|
+
.nf
|
|
379
|
+
sw-search ./chunks/ \\
|
|
380
|
+
--chunking-strategy json \\
|
|
381
|
+
--file-types json \\
|
|
382
|
+
--output final.swsearch
|
|
383
|
+
.fi
|
|
384
|
+
.RE
|
|
385
|
+
.SS Migration
|
|
386
|
+
Show index information:
|
|
387
|
+
.PP
|
|
388
|
+
.RS
|
|
389
|
+
.nf
|
|
390
|
+
sw-search migrate --info ./docs.swsearch
|
|
391
|
+
.fi
|
|
392
|
+
.RE
|
|
393
|
+
.PP
|
|
394
|
+
Migrate to pgvector:
|
|
395
|
+
.PP
|
|
396
|
+
.RS
|
|
397
|
+
.nf
|
|
398
|
+
sw-search migrate ./docs.swsearch --to-pgvector \\
|
|
399
|
+
--connection-string "postgresql://user:pass@localhost/db" \\
|
|
400
|
+
--collection-name docs_collection
|
|
401
|
+
.fi
|
|
402
|
+
.RE
|
|
403
|
+
.SH FILE FORMATS
|
|
404
|
+
.SS .swsearch Files
|
|
405
|
+
SQLite-based search index files containing:
|
|
406
|
+
.IP \(bu 2
|
|
407
|
+
Document chunks with text content
|
|
408
|
+
.IP \(bu 2
|
|
409
|
+
Embedding vectors for semantic search
|
|
410
|
+
.IP \(bu 2
|
|
411
|
+
Metadata (source file, tags, headers)
|
|
412
|
+
.IP \(bu 2
|
|
413
|
+
Index configuration and model information
|
|
414
|
+
.SS Supported Input Formats
|
|
415
|
+
.IP \(bu 2
|
|
416
|
+
.B Markdown
|
|
417
|
+
(.md) \- Full support including code block detection
|
|
418
|
+
.IP \(bu 2
|
|
419
|
+
.B Text
|
|
420
|
+
(.txt) \- Plain text files
|
|
421
|
+
.IP \(bu 2
|
|
422
|
+
.B reStructuredText
|
|
423
|
+
(.rst) \- Documentation format
|
|
424
|
+
.IP \(bu 2
|
|
425
|
+
.B PDF
|
|
426
|
+
(.pdf) \- Requires pdfplumber (install with [search-full])
|
|
427
|
+
.IP \(bu 2
|
|
428
|
+
.B Word
|
|
429
|
+
(.docx) \- Requires python-docx (install with [search-full])
|
|
430
|
+
.IP \(bu 2
|
|
431
|
+
.B Excel
|
|
432
|
+
(.xlsx) \- Requires openpyxl (install with [search-full])
|
|
433
|
+
.IP \(bu 2
|
|
434
|
+
.B PowerPoint
|
|
435
|
+
(.pptx) \- Requires python-pptx (install with [search-full])
|
|
436
|
+
.IP \(bu 2
|
|
437
|
+
.B RTF
|
|
438
|
+
(.rtf) \- Requires striprtf (install with [search-full])
|
|
439
|
+
.IP \(bu 2
|
|
440
|
+
.B JSON
|
|
441
|
+
(.json) \- Pre-chunked content
|
|
442
|
+
.SH INSTALLATION
|
|
443
|
+
The search functionality requires optional dependencies:
|
|
444
|
+
.PP
|
|
445
|
+
.RS
|
|
446
|
+
.nf
|
|
447
|
+
# Query-only (search existing indexes)
|
|
448
|
+
pip install signalwire-agents[search-queryonly]
|
|
449
|
+
|
|
450
|
+
# Full search (build and query)
|
|
451
|
+
pip install signalwire-agents[search]
|
|
452
|
+
|
|
453
|
+
# With document processing (PDF, Word, etc.)
|
|
454
|
+
pip install signalwire-agents[search-full]
|
|
455
|
+
|
|
456
|
+
# With pgvector support
|
|
457
|
+
pip install signalwire-agents[pgvector]
|
|
458
|
+
|
|
459
|
+
# Everything
|
|
460
|
+
pip install signalwire-agents[search-all]
|
|
461
|
+
.fi
|
|
462
|
+
.RE
|
|
463
|
+
.SH EXIT STATUS
|
|
464
|
+
.TP
|
|
465
|
+
.B 0
|
|
466
|
+
Successful execution.
|
|
467
|
+
.TP
|
|
468
|
+
.B 1
|
|
469
|
+
An error occurred. Check stderr for details.
|
|
470
|
+
.SH ENVIRONMENT
|
|
471
|
+
.TP
|
|
472
|
+
.B SIGNALWIRE_LOG_MODE
|
|
473
|
+
Controls logging verbosity. Set to "off" to suppress logs.
|
|
474
|
+
.SH SEE ALSO
|
|
475
|
+
.BR swaig-test (1),
|
|
476
|
+
.BR sw-agent-init (1)
|
|
477
|
+
.PP
|
|
478
|
+
SignalWire AI Agents SDK documentation:
|
|
479
|
+
.I https://github.com/signalwire/signalwire-agents
|
|
480
|
+
.SH AUTHORS
|
|
481
|
+
SignalWire Team <info@signalwire.com>
|
|
482
|
+
.SH COPYRIGHT
|
|
483
|
+
Copyright (c) 2025 SignalWire. Licensed under the MIT License.
|