Explore
The Explore function is disabled where multiple inference (e.g. text2vec-xxx) modules are enabled.
As a result, Explore is not available on Weaviate Cloud (WCD) as its clusters are pre-configured with multiple inference modules for AWS, Cohere, Google, OpenAI and so on.
Use Explore to perform vector searches across multiple collections. Note that Explore is currently not available in the gRPC API.
Requirements​
For Explore:
- The Weaviate instance to be configured with a maximum of one vectorizer (e.g.
text2vec-transformers,text2vec-openai) module. - Each
Explorequery can only be a vector search usingnearTextornearVector.
Explore queries​
Explore structure and syntax​
The Explore function has the following syntax:
{
Explore (
limit: <Int>, # The maximum amount of objects to return
nearText: { # Either this or 'nearVector' is required
concepts: [<String>]!, # Required - An array of search items. If the text2vec-contextionary is the vectorization module, the concepts should be present in the Contextionary.
certainty: <Float>, # Minimal level of certainty, computed by normalized distance
moveTo: { # Optional - Giving directions to the search
concepts: [<String>]!, # List of search items
force: <Float>! # The force to apply for a particular movement. Must be between 0 (no movement) and 1 (largest possible movement).
},
moveAwayFrom: { # Optional - Giving directions to the search
concepts: [<String>]!, # List of search items
force: <Float>! # The force to apply for a particular movement. Must be between 0 (no movement) and 1 (largest possible movement).
}
},
nearVector: { # Either this or 'nearText' is required
vector: [<Float>]!, # Required - An array of search items, which length should match the vector space
certainty: <Float> # Minimal level of certainty, computed by normalized distance
}
) {
beacon
certainty # certainty value based on a normalized distance calculation
className
}
}
An example query:
If a snippet doesn't work or you have feedback, please open a GitHub issue.
package main
import (
"context"
"fmt"
"github.com/weaviate/weaviate-go-client/v5/weaviate"
"github.com/weaviate/weaviate-go-client/v5/weaviate/graphql"
)
func main() {
cfg := weaviate.Config{
Host: "localhost:8080",
Scheme: "http",
}
client, err := weaviate.NewClient(cfg)
if err != nil {
panic(err)
}
vector := []float32{-0.36840257, 0.13973749, -0.28994447, -0.18607682, 0.20019795, 0.15541431, -0.42353877, 0.30262852, 0.2724561, 0.07069917, 0.4877447, 0.038771532, 0.64523, -0.15907241, -0.3413626, -0.026682584, -0.63310874, -0.33411884, 0.082939014, 0.30305764, 0.045918174, -0.21439327, -0.5005205, 0.6210859, -0.2729049, -0.51221114, 0.09680918, 0.094923325, -0.15688285, -0.07325482, 0.6588305, 0.0523736, -0.14173415, -0.27428055, 0.25526586, 0.057506185, -0.3103442, 0.028601522, 0.124522656, 0.66984487, 0.12160647, -0.5090515, -0.540393, -0.39546522, -0.2201204, 0.34625968, -0.21068871, 0.21132985, 0.048714135, 0.09043683, 0.3176081, -0.056684002, -0.12117501, -0.6591976, -0.26731065, 0.42615625, 0.33333477, -0.3240578, -0.18771006, 0.2328068, -0.17239179, -0.33583146, -0.6556605, -0.10608161, -0.5135395, -0.25123677, -0.23004892, 0.7036331, 0.04456794, 0.41253626, 0.27872285, -0.28226635, 0.11927197, -0.4677766, 0.4343466, -0.17538455, 0.10621233, 0.95815116, 0.23587844, -0.006406698, -0.10512518, -1.1125883, -0.37921682, 0.040789194, 0.676718, 0.3369762, 0.040712647, 0.580487, 0.20063736, -0.021220192, -0.09071747, -0.0023735985, 0.30007777, -0.039925132, 0.4035474, -0.2518212, -0.17846306, 0.12371392, -0.0703354, -0.3752431, -0.652917, 0.5952828, 1.3426708, -0.08167235, -0.38515738, 0.058423538, -0.08100355, -0.192886, 0.3745164, -0.23291737, 0.33326542, -0.6019264, -0.42822492, -0.6524583, -0.15210791, -0.5073593, 0.022548754, -0.058033653, -0.47369233, -0.30890635, 0.6338296, 0.0017854869, 0.1954949, 0.99348027, -0.26558784, -0.058124136, 1.149388, 0.02915948, 0.013422121, 0.25484946, -0.030017598, -0.23879935, 0.053123385, -0.36463016, -0.0024245526, 0.1202083, -0.45966506, -0.34140104, -0.08484162, -0.03537422, -0.2817959, 0.25044164, -0.5060605, 0.1252808, -0.032539487, 0.110069446, -0.20679846, -0.46421885, -0.4141739, 0.26994973, -0.070687145, 0.16862138, -0.20162229, 0.22199251, -0.2771402, 0.23653336, 0.16585203, -0.08286354, -0.15343396, 0.23893964, -0.7453282, -0.16549355, -0.1947069, 0.46136436, 0.22064126, 0.28654936, -0.038697664, 0.037633028, -0.80988157, 0.5094175, -0.0920082, 0.25405347, -0.64169943, 0.43366328, -0.2999211, -0.4090591, 0.11957859, 0.00803617, -0.0433745, 0.12818244, 0.28464508, -0.31760025, 0.16558012, -0.33553946, -0.3943465, 0.59569097, -0.6524206, 0.3683173, -0.60456693, 0.2046492, 0.46010277, 0.24695799, 0.2946015, 0.11376746, -0.027988048, 0.03749422, -0.16577742, 0.23407385, -0.0231737, -0.023245076, 0.08752677, 0.2299883, 0.35467404, 0.046193745, -0.39828986, 0.21079691, 0.38396686, -0.0018698421, 0.16047359, -0.057517264, -0.203534, 0.23438136, -0.84250915, 0.22371331, 0.0058325706, 0.30733636, 0.19518353, -0.108008966, 0.6509316, 0.070131645, -0.24023099, 0.28779706, 0.2326336, 0.07004021, -0.45955566, 0.20426086, -0.37472793, -0.049604423, 0.4537271, 0.6133582, -1.0527759, -0.5472505, 0.15193434, 0.5296606, -0.11560251, 0.07279209, 0.40557706, 0.2505283, 0.24490519, 0.017602902, -0.004647707, 0.16608049, 0.12576887, 0.118216865, 0.4403996, 0.39552462, -0.22196701, -0.061155193, 0.03693534, -0.4022908, 0.3842317, -0.0831345, 0.01930883, 0.3446575, -0.2167439, -0.23994556, -0.09370326, -0.3671856, 0.044011243, 0.017895095, -0.019855855, -0.16416992, 0.17858285, 0.31287143, 0.38368022, -0.006513525, 0.45780763, -0.23027879, 0.108570844, -0.4449492, -0.035763215, 0.03818417, 0.040017277, -0.17022872, -0.2622464, 0.65610534, 0.16720143, 0.2515769, -0.23535803, 0.62484455, 0.16771325, -0.62404263, 0.19176348, -0.72786695, 0.18485649, -0.30914405, -0.3230534, -0.24064465, 0.28841522, 0.39792386, 0.15618932, 0.03928854, 0.18277727, -0.101632096, 0.1868196, -0.33366352, 0.086561844, 0.48557812, -0.6198209, -0.07978742}
withNearVector := client.GraphQL().NearVectorArgBuilder().
WithVector(vector)
result, err := client.GraphQL().Explore().
WithFields(
graphql.Beacon,
graphql.Certainty, # only supported if distance==cosine
graphql.Distance # always supported
graphql.ClassName).
WithNearVector(withNearVector).
Do(context.Background())
if err != nil {
panic(err)
}
fmt.Printf("%v", result)
}
The result might look like this:
{
"data": {
"Explore": [
{
"beacon": "weaviate://localhost/7e9b9ffe-e645-302d-9d94-517670623b35",
"certainty": 0.975523,
"className": "Publication"
}
]
},
"errors": null
}
Search operators​
The nearText and nearVector operators work in Explore as they do in other queries. See search operators for more information.
Filters​
Explore queries can be combined with filters. See filters for more information.
Pagination​
Pagination (i.e. limit with offset) is not possible in Explore queries.
Moving​
Because pagination is not possible in multidimensional storage, we recommend using moveTo and moveAwayFrom if further query refinement is sought. They work as they do in other queries. See search operators#nearText for more information.
Questions and feedback​
If you have any questions or feedback, let us know in the user forum.
