turbopuffer 0.1.0 → 1.2.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.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +205 -0
  4. data/README.md +270 -40
  5. data/SECURITY.md +27 -0
  6. data/lib/turbopuffer/client.rb +122 -16
  7. data/lib/turbopuffer/errors.rb +228 -0
  8. data/lib/turbopuffer/file_part.rb +55 -0
  9. data/lib/turbopuffer/internal/namespace_page.rb +86 -0
  10. data/lib/turbopuffer/internal/transport/base_client.rb +567 -0
  11. data/lib/turbopuffer/internal/transport/pooled_net_requester.rb +201 -0
  12. data/lib/turbopuffer/internal/type/array_of.rb +168 -0
  13. data/lib/turbopuffer/internal/type/base_model.rb +529 -0
  14. data/lib/turbopuffer/internal/type/base_page.rb +55 -0
  15. data/lib/turbopuffer/internal/type/boolean.rb +77 -0
  16. data/lib/turbopuffer/internal/type/converter.rb +327 -0
  17. data/lib/turbopuffer/internal/type/enum.rb +152 -0
  18. data/lib/turbopuffer/internal/type/file_input.rb +108 -0
  19. data/lib/turbopuffer/internal/type/hash_of.rb +188 -0
  20. data/lib/turbopuffer/internal/type/request_parameters.rb +42 -0
  21. data/lib/turbopuffer/internal/type/union.rb +254 -0
  22. data/lib/turbopuffer/internal/type/unknown.rb +81 -0
  23. data/lib/turbopuffer/internal/util.rb +914 -0
  24. data/lib/turbopuffer/internal.rb +20 -0
  25. data/lib/turbopuffer/models/aggregation_group.rb +8 -0
  26. data/lib/turbopuffer/models/attribute_schema.rb +19 -0
  27. data/lib/turbopuffer/models/attribute_schema_config.rb +56 -0
  28. data/lib/turbopuffer/models/attribute_type.rb +7 -0
  29. data/lib/turbopuffer/models/client_namespaces_params.rb +38 -0
  30. data/lib/turbopuffer/models/columns.rb +64 -0
  31. data/lib/turbopuffer/models/distance_metric.rb +19 -0
  32. data/lib/turbopuffer/models/full_text_search.rb +20 -0
  33. data/lib/turbopuffer/models/full_text_search_config.rb +83 -0
  34. data/lib/turbopuffer/models/id.rb +19 -0
  35. data/lib/turbopuffer/models/include_attributes.rb +22 -0
  36. data/lib/turbopuffer/models/language.rb +32 -0
  37. data/lib/turbopuffer/models/namespace_delete_all_params.rb +20 -0
  38. data/lib/turbopuffer/models/namespace_delete_all_response.rb +19 -0
  39. data/lib/turbopuffer/models/namespace_explain_query_params.rb +137 -0
  40. data/lib/turbopuffer/models/namespace_explain_query_response.rb +19 -0
  41. data/lib/turbopuffer/models/namespace_hint_cache_warm_params.rb +20 -0
  42. data/lib/turbopuffer/models/namespace_hint_cache_warm_response.rb +26 -0
  43. data/lib/turbopuffer/models/namespace_metadata.rb +43 -0
  44. data/lib/turbopuffer/models/namespace_metadata_params.rb +20 -0
  45. data/lib/turbopuffer/models/namespace_multi_query_params.rb +73 -0
  46. data/lib/turbopuffer/models/namespace_multi_query_response.rb +58 -0
  47. data/lib/turbopuffer/models/namespace_query_params.rb +137 -0
  48. data/lib/turbopuffer/models/namespace_query_response.rb +49 -0
  49. data/lib/turbopuffer/models/namespace_recall_params.rb +66 -0
  50. data/lib/turbopuffer/models/namespace_recall_response.rb +68 -0
  51. data/lib/turbopuffer/models/namespace_schema_params.rb +20 -0
  52. data/lib/turbopuffer/models/namespace_schema_response.rb +8 -0
  53. data/lib/turbopuffer/models/namespace_summary.rb +19 -0
  54. data/lib/turbopuffer/models/namespace_update_schema_params.rb +29 -0
  55. data/lib/turbopuffer/models/namespace_update_schema_response.rb +9 -0
  56. data/lib/turbopuffer/models/namespace_write_params.rb +158 -0
  57. data/lib/turbopuffer/models/namespace_write_response.rb +67 -0
  58. data/lib/turbopuffer/models/query.rb +81 -0
  59. data/lib/turbopuffer/models/query_billing.rb +26 -0
  60. data/lib/turbopuffer/models/query_performance.rb +63 -0
  61. data/lib/turbopuffer/models/row.rb +46 -0
  62. data/lib/turbopuffer/models/tokenizer.rb +19 -0
  63. data/lib/turbopuffer/models/vector.rb +22 -0
  64. data/lib/turbopuffer/models/vector_encoding.rb +16 -0
  65. data/lib/turbopuffer/models/write_billing.rb +26 -0
  66. data/lib/turbopuffer/models.rb +106 -0
  67. data/lib/turbopuffer/namespace.rb +14 -50
  68. data/lib/turbopuffer/request_options.rb +77 -0
  69. data/lib/turbopuffer/resources/namespaces.rb +366 -0
  70. data/lib/turbopuffer/version.rb +1 -1
  71. data/lib/turbopuffer.rb +92 -4
  72. data/manifest.yaml +15 -0
  73. data/rbi/turbopuffer/client.rbi +91 -0
  74. data/rbi/turbopuffer/errors.rbi +205 -0
  75. data/rbi/turbopuffer/file_part.rbi +37 -0
  76. data/rbi/turbopuffer/internal/namespace_page.rbi +22 -0
  77. data/rbi/turbopuffer/internal/transport/base_client.rbi +297 -0
  78. data/rbi/turbopuffer/internal/transport/pooled_net_requester.rbi +80 -0
  79. data/rbi/turbopuffer/internal/type/array_of.rbi +104 -0
  80. data/rbi/turbopuffer/internal/type/base_model.rbi +304 -0
  81. data/rbi/turbopuffer/internal/type/base_page.rbi +43 -0
  82. data/rbi/turbopuffer/internal/type/boolean.rbi +58 -0
  83. data/rbi/turbopuffer/internal/type/converter.rbi +216 -0
  84. data/rbi/turbopuffer/internal/type/enum.rbi +82 -0
  85. data/rbi/turbopuffer/internal/type/file_input.rbi +59 -0
  86. data/rbi/turbopuffer/internal/type/hash_of.rbi +104 -0
  87. data/rbi/turbopuffer/internal/type/request_parameters.rbi +31 -0
  88. data/rbi/turbopuffer/internal/type/union.rbi +128 -0
  89. data/rbi/turbopuffer/internal/type/unknown.rbi +58 -0
  90. data/rbi/turbopuffer/internal/util.rbi +487 -0
  91. data/rbi/turbopuffer/internal.rbi +18 -0
  92. data/rbi/turbopuffer/models/aggregation_group.rbi +13 -0
  93. data/rbi/turbopuffer/models/attribute_schema.rbi +17 -0
  94. data/rbi/turbopuffer/models/attribute_schema_config.rbi +103 -0
  95. data/rbi/turbopuffer/models/attribute_type.rbi +7 -0
  96. data/rbi/turbopuffer/models/client_namespaces_params.rbi +71 -0
  97. data/rbi/turbopuffer/models/columns.rbi +82 -0
  98. data/rbi/turbopuffer/models/distance_metric.rbi +27 -0
  99. data/rbi/turbopuffer/models/full_text_search.rbi +19 -0
  100. data/rbi/turbopuffer/models/full_text_search_config.rbi +133 -0
  101. data/rbi/turbopuffer/models/id.rbi +16 -0
  102. data/rbi/turbopuffer/models/include_attributes.rbi +24 -0
  103. data/rbi/turbopuffer/models/language.rbi +36 -0
  104. data/rbi/turbopuffer/models/namespace_delete_all_params.rbi +41 -0
  105. data/rbi/turbopuffer/models/namespace_delete_all_response.rbi +31 -0
  106. data/rbi/turbopuffer/models/namespace_explain_query_params.rbi +273 -0
  107. data/rbi/turbopuffer/models/namespace_explain_query_response.rbi +34 -0
  108. data/rbi/turbopuffer/models/namespace_hint_cache_warm_params.rbi +41 -0
  109. data/rbi/turbopuffer/models/namespace_hint_cache_warm_response.rbi +38 -0
  110. data/rbi/turbopuffer/models/namespace_metadata.rbi +62 -0
  111. data/rbi/turbopuffer/models/namespace_metadata_params.rbi +41 -0
  112. data/rbi/turbopuffer/models/namespace_multi_query_params.rbi +175 -0
  113. data/rbi/turbopuffer/models/namespace_multi_query_response.rbi +121 -0
  114. data/rbi/turbopuffer/models/namespace_query_params.rbi +267 -0
  115. data/rbi/turbopuffer/models/namespace_query_response.rbi +84 -0
  116. data/rbi/turbopuffer/models/namespace_recall_params.rbi +106 -0
  117. data/rbi/turbopuffer/models/namespace_recall_response.rbi +134 -0
  118. data/rbi/turbopuffer/models/namespace_schema_params.rbi +41 -0
  119. data/rbi/turbopuffer/models/namespace_schema_response.rbi +11 -0
  120. data/rbi/turbopuffer/models/namespace_summary.rbi +28 -0
  121. data/rbi/turbopuffer/models/namespace_update_schema_params.rbi +80 -0
  122. data/rbi/turbopuffer/models/namespace_update_schema_response.rbi +11 -0
  123. data/rbi/turbopuffer/models/namespace_write_params.rbi +290 -0
  124. data/rbi/turbopuffer/models/namespace_write_response.rbi +101 -0
  125. data/rbi/turbopuffer/models/query.rbi +132 -0
  126. data/rbi/turbopuffer/models/query_billing.rbi +46 -0
  127. data/rbi/turbopuffer/models/query_performance.rbi +82 -0
  128. data/rbi/turbopuffer/models/row.rbi +47 -0
  129. data/rbi/turbopuffer/models/tokenizer.rbi +24 -0
  130. data/rbi/turbopuffer/models/vector.rbi +22 -0
  131. data/rbi/turbopuffer/models/vector_encoding.rbi +22 -0
  132. data/rbi/turbopuffer/models/write_billing.rbi +49 -0
  133. data/rbi/turbopuffer/models.rbi +72 -0
  134. data/rbi/turbopuffer/namespace.rbi +8 -0
  135. data/rbi/turbopuffer/request_options.rbi +59 -0
  136. data/rbi/turbopuffer/resources/namespaces.rbi +304 -0
  137. data/rbi/turbopuffer/version.rbi +5 -0
  138. data/sig/turbopuffer/client.rbs +41 -0
  139. data/sig/turbopuffer/errors.rbs +117 -0
  140. data/sig/turbopuffer/file_part.rbs +21 -0
  141. data/sig/turbopuffer/internal/namespace_page.rbs +13 -0
  142. data/sig/turbopuffer/internal/transport/base_client.rbs +131 -0
  143. data/sig/turbopuffer/internal/transport/pooled_net_requester.rbs +45 -0
  144. data/sig/turbopuffer/internal/type/array_of.rbs +48 -0
  145. data/sig/turbopuffer/internal/type/base_model.rbs +102 -0
  146. data/sig/turbopuffer/internal/type/base_page.rbs +24 -0
  147. data/sig/turbopuffer/internal/type/boolean.rbs +26 -0
  148. data/sig/turbopuffer/internal/type/converter.rbs +79 -0
  149. data/sig/turbopuffer/internal/type/enum.rbs +32 -0
  150. data/sig/turbopuffer/internal/type/file_input.rbs +25 -0
  151. data/sig/turbopuffer/internal/type/hash_of.rbs +48 -0
  152. data/sig/turbopuffer/internal/type/request_parameters.rbs +19 -0
  153. data/sig/turbopuffer/internal/type/union.rbs +52 -0
  154. data/sig/turbopuffer/internal/type/unknown.rbs +26 -0
  155. data/sig/turbopuffer/internal/util.rbs +185 -0
  156. data/sig/turbopuffer/internal.rbs +9 -0
  157. data/sig/turbopuffer/models/aggregation_group.rbs +7 -0
  158. data/sig/turbopuffer/models/attribute_schema.rbs +11 -0
  159. data/sig/turbopuffer/models/attribute_schema_config.rbs +52 -0
  160. data/sig/turbopuffer/models/attribute_type.rbs +5 -0
  161. data/sig/turbopuffer/models/client_namespaces_params.rbs +38 -0
  162. data/sig/turbopuffer/models/columns.rbs +42 -0
  163. data/sig/turbopuffer/models/distance_metric.rbs +17 -0
  164. data/sig/turbopuffer/models/full_text_search.rbs +11 -0
  165. data/sig/turbopuffer/models/full_text_search_config.rbs +75 -0
  166. data/sig/turbopuffer/models/id.rbs +11 -0
  167. data/sig/turbopuffer/models/include_attributes.rbs +13 -0
  168. data/sig/turbopuffer/models/language.rbs +48 -0
  169. data/sig/turbopuffer/models/namespace_delete_all_params.rbs +25 -0
  170. data/sig/turbopuffer/models/namespace_delete_all_response.rbs +13 -0
  171. data/sig/turbopuffer/models/namespace_explain_query_params.rbs +141 -0
  172. data/sig/turbopuffer/models/namespace_explain_query_response.rbs +15 -0
  173. data/sig/turbopuffer/models/namespace_hint_cache_warm_params.rbs +25 -0
  174. data/sig/turbopuffer/models/namespace_hint_cache_warm_response.rbs +18 -0
  175. data/sig/turbopuffer/models/namespace_metadata.rbs +35 -0
  176. data/sig/turbopuffer/models/namespace_metadata_params.rbs +25 -0
  177. data/sig/turbopuffer/models/namespace_multi_query_params.rbs +86 -0
  178. data/sig/turbopuffer/models/namespace_multi_query_response.rbs +65 -0
  179. data/sig/turbopuffer/models/namespace_query_params.rbs +139 -0
  180. data/sig/turbopuffer/models/namespace_query_response.rbs +48 -0
  181. data/sig/turbopuffer/models/namespace_recall_params.rbs +63 -0
  182. data/sig/turbopuffer/models/namespace_recall_response.rbs +61 -0
  183. data/sig/turbopuffer/models/namespace_schema_params.rbs +25 -0
  184. data/sig/turbopuffer/models/namespace_schema_response.rbs +8 -0
  185. data/sig/turbopuffer/models/namespace_summary.rbs +13 -0
  186. data/sig/turbopuffer/models/namespace_update_schema_params.rbs +37 -0
  187. data/sig/turbopuffer/models/namespace_update_schema_response.rbs +8 -0
  188. data/sig/turbopuffer/models/namespace_write_params.rbs +156 -0
  189. data/sig/turbopuffer/models/namespace_write_response.rbs +56 -0
  190. data/sig/turbopuffer/models/query.rbs +75 -0
  191. data/sig/turbopuffer/models/query_billing.rbs +25 -0
  192. data/sig/turbopuffer/models/query_performance.rbs +45 -0
  193. data/sig/turbopuffer/models/row.rbs +24 -0
  194. data/sig/turbopuffer/models/tokenizer.rbs +16 -0
  195. data/sig/turbopuffer/models/vector.rbs +13 -0
  196. data/sig/turbopuffer/models/vector_encoding.rbs +14 -0
  197. data/sig/turbopuffer/models/write_billing.rbs +27 -0
  198. data/sig/turbopuffer/models.rbs +65 -0
  199. data/sig/turbopuffer/namespace.rbs +5 -0
  200. data/sig/turbopuffer/request_options.rbs +36 -0
  201. data/sig/turbopuffer/resources/namespaces.rbs +99 -0
  202. data/sig/turbopuffer/version.rbs +3 -0
  203. metadata +218 -29
  204. data/.standard.yml +0 -3
  205. data/LICENSE.txt +0 -21
  206. data/Rakefile +0 -10
  207. data/sig/turbopuffer.rbs +0 -4
@@ -0,0 +1,82 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ class Columns < Turbopuffer::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Turbopuffer::Columns, Turbopuffer::Internal::AnyHash)
9
+ end
10
+
11
+ # The IDs of the documents.
12
+ sig { returns(T::Array[Turbopuffer::ID::Variants]) }
13
+ attr_accessor :id
14
+
15
+ # The vector embeddings of the documents.
16
+ sig { returns(T.nilable(Turbopuffer::Columns::Vector::Variants)) }
17
+ attr_reader :vector
18
+
19
+ sig { params(vector: Turbopuffer::Columns::Vector::Variants).void }
20
+ attr_writer :vector
21
+
22
+ # A list of documents in columnar format. Each key is a column name, mapped to an
23
+ # array of values for that column.
24
+ sig do
25
+ params(
26
+ id: T::Array[Turbopuffer::ID::Variants],
27
+ vector: Turbopuffer::Columns::Vector::Variants
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(
31
+ # The IDs of the documents.
32
+ id:,
33
+ # The vector embeddings of the documents.
34
+ vector: nil
35
+ )
36
+ end
37
+
38
+ sig do
39
+ override.returns(
40
+ {
41
+ id: T::Array[Turbopuffer::ID::Variants],
42
+ vector: Turbopuffer::Columns::Vector::Variants
43
+ }
44
+ )
45
+ end
46
+ def to_hash
47
+ end
48
+
49
+ # The vector embeddings of the documents.
50
+ module Vector
51
+ extend Turbopuffer::Internal::Type::Union
52
+
53
+ Variants =
54
+ T.type_alias do
55
+ T.any(
56
+ T::Array[Turbopuffer::Vector::Variants],
57
+ T::Array[Float],
58
+ String
59
+ )
60
+ end
61
+
62
+ sig do
63
+ override.returns(T::Array[Turbopuffer::Columns::Vector::Variants])
64
+ end
65
+ def self.variants
66
+ end
67
+
68
+ VectorArray =
69
+ T.let(
70
+ Turbopuffer::Internal::Type::ArrayOf[union: Turbopuffer::Vector],
71
+ Turbopuffer::Internal::Type::Converter
72
+ )
73
+
74
+ FloatArray =
75
+ T.let(
76
+ Turbopuffer::Internal::Type::ArrayOf[Float],
77
+ Turbopuffer::Internal::Type::Converter
78
+ )
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ # A function used to calculate vector similarity.
6
+ module DistanceMetric
7
+ extend Turbopuffer::Internal::Type::Enum
8
+
9
+ TaggedSymbol = T.type_alias { T.all(Symbol, Turbopuffer::DistanceMetric) }
10
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
11
+
12
+ # Defined as `1 - cosine_similarity` and ranges from 0 to 2. Lower is better.
13
+ COSINE_DISTANCE =
14
+ T.let(:cosine_distance, Turbopuffer::DistanceMetric::TaggedSymbol)
15
+
16
+ # Defined as `sum((x - y)^2)`. Lower is better.
17
+ EUCLIDEAN_SQUARED =
18
+ T.let(:euclidean_squared, Turbopuffer::DistanceMetric::TaggedSymbol)
19
+
20
+ sig do
21
+ override.returns(T::Array[Turbopuffer::DistanceMetric::TaggedSymbol])
22
+ end
23
+ def self.values
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ # Whether this attribute can be used as part of a BM25 full-text search. Requires
6
+ # the `string` or `[]string` type, and by default, BM25-enabled attributes are not
7
+ # filterable. You can override this by setting `filterable: true`.
8
+ module FullTextSearch
9
+ extend Turbopuffer::Internal::Type::Union
10
+
11
+ Variants =
12
+ T.type_alias { T.any(T::Boolean, Turbopuffer::FullTextSearchConfig) }
13
+
14
+ sig { override.returns(T::Array[Turbopuffer::FullTextSearch::Variants]) }
15
+ def self.variants
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,133 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ class FullTextSearchConfig < Turbopuffer::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Turbopuffer::FullTextSearchConfig,
10
+ Turbopuffer::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The `b` document length normalization parameter for BM25. Defaults to `0.75`.
15
+ sig { returns(T.nilable(Float)) }
16
+ attr_reader :b
17
+
18
+ sig { params(b: Float).void }
19
+ attr_writer :b
20
+
21
+ # Whether searching is case-sensitive. Defaults to `false` (i.e.
22
+ # case-insensitive).
23
+ sig { returns(T.nilable(T::Boolean)) }
24
+ attr_reader :case_sensitive
25
+
26
+ sig { params(case_sensitive: T::Boolean).void }
27
+ attr_writer :case_sensitive
28
+
29
+ # The `k1` term saturation parameter for BM25. Defaults to `1.2`.
30
+ sig { returns(T.nilable(Float)) }
31
+ attr_reader :k1
32
+
33
+ sig { params(k1: Float).void }
34
+ attr_writer :k1
35
+
36
+ # Describes the language of a text attribute. Defaults to `english`.
37
+ sig { returns(T.nilable(Turbopuffer::Language::OrSymbol)) }
38
+ attr_reader :language
39
+
40
+ sig { params(language: Turbopuffer::Language::OrSymbol).void }
41
+ attr_writer :language
42
+
43
+ # Maximum length of a token in bytes. Tokens larger than this value during
44
+ # tokenization will be filtered out. Has to be between `1` and `254` (inclusive).
45
+ # Defaults to `39`.
46
+ sig { returns(T.nilable(Integer)) }
47
+ attr_reader :max_token_length
48
+
49
+ sig { params(max_token_length: Integer).void }
50
+ attr_writer :max_token_length
51
+
52
+ # Removes common words from the text based on language. Defaults to `true` (i.e.
53
+ # remove common words).
54
+ sig { returns(T.nilable(T::Boolean)) }
55
+ attr_reader :remove_stopwords
56
+
57
+ sig { params(remove_stopwords: T::Boolean).void }
58
+ attr_writer :remove_stopwords
59
+
60
+ # Language-specific stemming for the text. Defaults to `false` (i.e., do not
61
+ # stem).
62
+ sig { returns(T.nilable(T::Boolean)) }
63
+ attr_reader :stemming
64
+
65
+ sig { params(stemming: T::Boolean).void }
66
+ attr_writer :stemming
67
+
68
+ # The tokenizer to use for full-text search on an attribute. Defaults to
69
+ # `word_v2`.
70
+ sig { returns(T.nilable(Turbopuffer::Tokenizer::OrSymbol)) }
71
+ attr_reader :tokenizer
72
+
73
+ sig { params(tokenizer: Turbopuffer::Tokenizer::OrSymbol).void }
74
+ attr_writer :tokenizer
75
+
76
+ # Configuration options for full-text search.
77
+ sig do
78
+ params(
79
+ b: Float,
80
+ case_sensitive: T::Boolean,
81
+ k1: Float,
82
+ language: Turbopuffer::Language::OrSymbol,
83
+ max_token_length: Integer,
84
+ remove_stopwords: T::Boolean,
85
+ stemming: T::Boolean,
86
+ tokenizer: Turbopuffer::Tokenizer::OrSymbol
87
+ ).returns(T.attached_class)
88
+ end
89
+ def self.new(
90
+ # The `b` document length normalization parameter for BM25. Defaults to `0.75`.
91
+ b: nil,
92
+ # Whether searching is case-sensitive. Defaults to `false` (i.e.
93
+ # case-insensitive).
94
+ case_sensitive: nil,
95
+ # The `k1` term saturation parameter for BM25. Defaults to `1.2`.
96
+ k1: nil,
97
+ # Describes the language of a text attribute. Defaults to `english`.
98
+ language: nil,
99
+ # Maximum length of a token in bytes. Tokens larger than this value during
100
+ # tokenization will be filtered out. Has to be between `1` and `254` (inclusive).
101
+ # Defaults to `39`.
102
+ max_token_length: nil,
103
+ # Removes common words from the text based on language. Defaults to `true` (i.e.
104
+ # remove common words).
105
+ remove_stopwords: nil,
106
+ # Language-specific stemming for the text. Defaults to `false` (i.e., do not
107
+ # stem).
108
+ stemming: nil,
109
+ # The tokenizer to use for full-text search on an attribute. Defaults to
110
+ # `word_v2`.
111
+ tokenizer: nil
112
+ )
113
+ end
114
+
115
+ sig do
116
+ override.returns(
117
+ {
118
+ b: Float,
119
+ case_sensitive: T::Boolean,
120
+ k1: Float,
121
+ language: Turbopuffer::Language::OrSymbol,
122
+ max_token_length: Integer,
123
+ remove_stopwords: T::Boolean,
124
+ stemming: T::Boolean,
125
+ tokenizer: Turbopuffer::Tokenizer::OrSymbol
126
+ }
127
+ )
128
+ end
129
+ def to_hash
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,16 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ # An identifier for a document.
6
+ module ID
7
+ extend Turbopuffer::Internal::Type::Union
8
+
9
+ Variants = T.type_alias { T.any(String, Integer) }
10
+
11
+ sig { override.returns(T::Array[Turbopuffer::ID::Variants]) }
12
+ def self.variants
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ # Whether to include attributes in the response.
6
+ module IncludeAttributes
7
+ extend Turbopuffer::Internal::Type::Union
8
+
9
+ Variants = T.type_alias { T.any(T::Boolean, T::Array[String]) }
10
+
11
+ sig do
12
+ override.returns(T::Array[Turbopuffer::IncludeAttributes::Variants])
13
+ end
14
+ def self.variants
15
+ end
16
+
17
+ StringArray =
18
+ T.let(
19
+ Turbopuffer::Internal::Type::ArrayOf[String],
20
+ Turbopuffer::Internal::Type::Converter
21
+ )
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,36 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ # Describes the language of a text attribute. Defaults to `english`.
6
+ module Language
7
+ extend Turbopuffer::Internal::Type::Enum
8
+
9
+ TaggedSymbol = T.type_alias { T.all(Symbol, Turbopuffer::Language) }
10
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
11
+
12
+ ARABIC = T.let(:arabic, Turbopuffer::Language::TaggedSymbol)
13
+ DANISH = T.let(:danish, Turbopuffer::Language::TaggedSymbol)
14
+ DUTCH = T.let(:dutch, Turbopuffer::Language::TaggedSymbol)
15
+ ENGLISH = T.let(:english, Turbopuffer::Language::TaggedSymbol)
16
+ FINNISH = T.let(:finnish, Turbopuffer::Language::TaggedSymbol)
17
+ FRENCH = T.let(:french, Turbopuffer::Language::TaggedSymbol)
18
+ GERMAN = T.let(:german, Turbopuffer::Language::TaggedSymbol)
19
+ GREEK = T.let(:greek, Turbopuffer::Language::TaggedSymbol)
20
+ HUNGARIAN = T.let(:hungarian, Turbopuffer::Language::TaggedSymbol)
21
+ ITALIAN = T.let(:italian, Turbopuffer::Language::TaggedSymbol)
22
+ NORWEGIAN = T.let(:norwegian, Turbopuffer::Language::TaggedSymbol)
23
+ PORTUGUESE = T.let(:portuguese, Turbopuffer::Language::TaggedSymbol)
24
+ ROMANIAN = T.let(:romanian, Turbopuffer::Language::TaggedSymbol)
25
+ RUSSIAN = T.let(:russian, Turbopuffer::Language::TaggedSymbol)
26
+ SPANISH = T.let(:spanish, Turbopuffer::Language::TaggedSymbol)
27
+ SWEDISH = T.let(:swedish, Turbopuffer::Language::TaggedSymbol)
28
+ TAMIL = T.let(:tamil, Turbopuffer::Language::TaggedSymbol)
29
+ TURKISH = T.let(:turkish, Turbopuffer::Language::TaggedSymbol)
30
+
31
+ sig { override.returns(T::Array[Turbopuffer::Language::TaggedSymbol]) }
32
+ def self.values
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,41 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ class NamespaceDeleteAllParams < Turbopuffer::Internal::Type::BaseModel
6
+ extend Turbopuffer::Internal::Type::RequestParameters::Converter
7
+ include Turbopuffer::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Turbopuffer::NamespaceDeleteAllParams,
13
+ Turbopuffer::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(T.nilable(String)) }
18
+ attr_reader :namespace
19
+
20
+ sig { params(namespace: String).void }
21
+ attr_writer :namespace
22
+
23
+ sig do
24
+ params(
25
+ namespace: String,
26
+ request_options: Turbopuffer::RequestOptions::OrHash
27
+ ).returns(T.attached_class)
28
+ end
29
+ def self.new(namespace: nil, request_options: {})
30
+ end
31
+
32
+ sig do
33
+ override.returns(
34
+ { namespace: String, request_options: Turbopuffer::RequestOptions }
35
+ )
36
+ end
37
+ def to_hash
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,31 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ class NamespaceDeleteAllResponse < Turbopuffer::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Turbopuffer::Models::NamespaceDeleteAllResponse,
10
+ Turbopuffer::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The status of the request.
15
+ sig { returns(Symbol) }
16
+ attr_accessor :status
17
+
18
+ # The response to a successful namespace deletion request.
19
+ sig { params(status: Symbol).returns(T.attached_class) }
20
+ def self.new(
21
+ # The status of the request.
22
+ status: :OK
23
+ )
24
+ end
25
+
26
+ sig { override.returns({ status: Symbol }) }
27
+ def to_hash
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,273 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Models
5
+ class NamespaceExplainQueryParams < Turbopuffer::Internal::Type::BaseModel
6
+ extend Turbopuffer::Internal::Type::RequestParameters::Converter
7
+ include Turbopuffer::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Turbopuffer::NamespaceExplainQueryParams,
13
+ Turbopuffer::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(T.nilable(String)) }
18
+ attr_reader :namespace
19
+
20
+ sig { params(namespace: String).void }
21
+ attr_writer :namespace
22
+
23
+ # Aggregations to compute over all documents in the namespace that match the
24
+ # filters.
25
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
26
+ attr_reader :aggregate_by
27
+
28
+ sig { params(aggregate_by: T::Hash[Symbol, T.anything]).void }
29
+ attr_writer :aggregate_by
30
+
31
+ # The consistency level for a query.
32
+ sig do
33
+ returns(
34
+ T.nilable(Turbopuffer::NamespaceExplainQueryParams::Consistency)
35
+ )
36
+ end
37
+ attr_reader :consistency
38
+
39
+ sig do
40
+ params(
41
+ consistency:
42
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::OrHash
43
+ ).void
44
+ end
45
+ attr_writer :consistency
46
+
47
+ # A function used to calculate vector similarity.
48
+ sig { returns(T.nilable(Turbopuffer::DistanceMetric::OrSymbol)) }
49
+ attr_reader :distance_metric
50
+
51
+ sig do
52
+ params(distance_metric: Turbopuffer::DistanceMetric::OrSymbol).void
53
+ end
54
+ attr_writer :distance_metric
55
+
56
+ # List of attribute names to exclude from the response. All other attributes will
57
+ # be included in the response.
58
+ sig { returns(T.nilable(T::Array[String])) }
59
+ attr_reader :exclude_attributes
60
+
61
+ sig { params(exclude_attributes: T::Array[String]).void }
62
+ attr_writer :exclude_attributes
63
+
64
+ # Exact filters for attributes to refine search results for. Think of it as a SQL
65
+ # WHERE clause.
66
+ sig { returns(T.nilable(T.anything)) }
67
+ attr_reader :filters
68
+
69
+ sig { params(filters: T.anything).void }
70
+ attr_writer :filters
71
+
72
+ # Groups documents by the specified attributes (the "group key") before computing
73
+ # aggregates. Aggregates are computed separately for each group.
74
+ sig { returns(T.nilable(T::Array[String])) }
75
+ attr_reader :group_by
76
+
77
+ sig { params(group_by: T::Array[String]).void }
78
+ attr_writer :group_by
79
+
80
+ # Whether to include attributes in the response.
81
+ sig { returns(T.nilable(Turbopuffer::IncludeAttributes::Variants)) }
82
+ attr_reader :include_attributes
83
+
84
+ sig do
85
+ params(
86
+ include_attributes: Turbopuffer::IncludeAttributes::Variants
87
+ ).void
88
+ end
89
+ attr_writer :include_attributes
90
+
91
+ # How to rank the documents in the namespace.
92
+ sig { returns(T.nilable(T.anything)) }
93
+ attr_reader :rank_by
94
+
95
+ sig { params(rank_by: T.anything).void }
96
+ attr_writer :rank_by
97
+
98
+ # The number of results to return.
99
+ sig { returns(T.nilable(Integer)) }
100
+ attr_reader :top_k
101
+
102
+ sig { params(top_k: Integer).void }
103
+ attr_writer :top_k
104
+
105
+ # The encoding to use for vectors in the response.
106
+ sig { returns(T.nilable(Turbopuffer::VectorEncoding::OrSymbol)) }
107
+ attr_reader :vector_encoding
108
+
109
+ sig do
110
+ params(vector_encoding: Turbopuffer::VectorEncoding::OrSymbol).void
111
+ end
112
+ attr_writer :vector_encoding
113
+
114
+ sig do
115
+ params(
116
+ namespace: String,
117
+ aggregate_by: T::Hash[Symbol, T.anything],
118
+ consistency:
119
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::OrHash,
120
+ distance_metric: Turbopuffer::DistanceMetric::OrSymbol,
121
+ exclude_attributes: T::Array[String],
122
+ filters: T.anything,
123
+ group_by: T::Array[String],
124
+ include_attributes: Turbopuffer::IncludeAttributes::Variants,
125
+ rank_by: T.anything,
126
+ top_k: Integer,
127
+ vector_encoding: Turbopuffer::VectorEncoding::OrSymbol,
128
+ request_options: Turbopuffer::RequestOptions::OrHash
129
+ ).returns(T.attached_class)
130
+ end
131
+ def self.new(
132
+ namespace: nil,
133
+ # Aggregations to compute over all documents in the namespace that match the
134
+ # filters.
135
+ aggregate_by: nil,
136
+ # The consistency level for a query.
137
+ consistency: nil,
138
+ # A function used to calculate vector similarity.
139
+ distance_metric: nil,
140
+ # List of attribute names to exclude from the response. All other attributes will
141
+ # be included in the response.
142
+ exclude_attributes: nil,
143
+ # Exact filters for attributes to refine search results for. Think of it as a SQL
144
+ # WHERE clause.
145
+ filters: nil,
146
+ # Groups documents by the specified attributes (the "group key") before computing
147
+ # aggregates. Aggregates are computed separately for each group.
148
+ group_by: nil,
149
+ # Whether to include attributes in the response.
150
+ include_attributes: nil,
151
+ # How to rank the documents in the namespace.
152
+ rank_by: nil,
153
+ # The number of results to return.
154
+ top_k: nil,
155
+ # The encoding to use for vectors in the response.
156
+ vector_encoding: nil,
157
+ request_options: {}
158
+ )
159
+ end
160
+
161
+ sig do
162
+ override.returns(
163
+ {
164
+ namespace: String,
165
+ aggregate_by: T::Hash[Symbol, T.anything],
166
+ consistency: Turbopuffer::NamespaceExplainQueryParams::Consistency,
167
+ distance_metric: Turbopuffer::DistanceMetric::OrSymbol,
168
+ exclude_attributes: T::Array[String],
169
+ filters: T.anything,
170
+ group_by: T::Array[String],
171
+ include_attributes: Turbopuffer::IncludeAttributes::Variants,
172
+ rank_by: T.anything,
173
+ top_k: Integer,
174
+ vector_encoding: Turbopuffer::VectorEncoding::OrSymbol,
175
+ request_options: Turbopuffer::RequestOptions
176
+ }
177
+ )
178
+ end
179
+ def to_hash
180
+ end
181
+
182
+ class Consistency < Turbopuffer::Internal::Type::BaseModel
183
+ OrHash =
184
+ T.type_alias do
185
+ T.any(
186
+ Turbopuffer::NamespaceExplainQueryParams::Consistency,
187
+ Turbopuffer::Internal::AnyHash
188
+ )
189
+ end
190
+
191
+ # The query's consistency level.
192
+ sig do
193
+ returns(
194
+ T.nilable(
195
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::OrSymbol
196
+ )
197
+ )
198
+ end
199
+ attr_reader :level
200
+
201
+ sig do
202
+ params(
203
+ level:
204
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::OrSymbol
205
+ ).void
206
+ end
207
+ attr_writer :level
208
+
209
+ # The consistency level for a query.
210
+ sig do
211
+ params(
212
+ level:
213
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::OrSymbol
214
+ ).returns(T.attached_class)
215
+ end
216
+ def self.new(
217
+ # The query's consistency level.
218
+ level: nil
219
+ )
220
+ end
221
+
222
+ sig do
223
+ override.returns(
224
+ {
225
+ level:
226
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::OrSymbol
227
+ }
228
+ )
229
+ end
230
+ def to_hash
231
+ end
232
+
233
+ # The query's consistency level.
234
+ module Level
235
+ extend Turbopuffer::Internal::Type::Enum
236
+
237
+ TaggedSymbol =
238
+ T.type_alias do
239
+ T.all(
240
+ Symbol,
241
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::Level
242
+ )
243
+ end
244
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
245
+
246
+ # Strong consistency. Requires a round-trip to object storage to fetch the latest writes.
247
+ STRONG =
248
+ T.let(
249
+ :strong,
250
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::TaggedSymbol
251
+ )
252
+
253
+ # Eventual consistency. Does not require a round-trip to object storage, but may not see the latest writes.
254
+ EVENTUAL =
255
+ T.let(
256
+ :eventual,
257
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::TaggedSymbol
258
+ )
259
+
260
+ sig do
261
+ override.returns(
262
+ T::Array[
263
+ Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::TaggedSymbol
264
+ ]
265
+ )
266
+ end
267
+ def self.values
268
+ end
269
+ end
270
+ end
271
+ end
272
+ end
273
+ end