curiosity

Developers

Search across
company data

Keyword search misses the paraphrase. Vector search misses the part number. Running both and merging the results is a job the runtime should already be doing.

One query, three lanes, one ranked list A query runs as keyword, vector and graph walk at once. Their results are fused into one ranked list, in which the supplier notice was found only by the graph walk. A320 hydraulic leak, left main gear01 · KEYWORDTCK-8812LOG-2291TCK-771002 · VECTORFR-0417TCK-8812LOG-229103 · GRAPH WALKSN-0093LOG-2291K V G01TCK-8812Ticket · leak at the gear bay02LOG-2291Maintenance log · seal replaced03SN-0093Supplier notice · seal batch recall04FR-0417Field report · fluid on the apron
One query: Keyword, Vector, Graph walk Keyword: Exact terms, part numbers, identifiers. Vector: Paraphrase and meaning, via embeddings. Graph walk: Related records the text never mentions. All inside one one query. 01 Keyword Exact terms, part numbers, identifiers 02 Vector Paraphrase and meaning, via embeddings 03 Graph walk Related records the text never mentions

Capabilities

How search works across your data

One call, three strategies, one ranked result set that knows who is asking.

Hybrid by default

Keyword and vector run together and are fused, rather than being two features you choose between.

Permission-aware

Filtering happens at query time against synced source permissions, not as a post-filter over results.

Traversal in the query

Follow relationships as part of retrieval, so a result can be reached through its neighbors.

Facets and filters

Typed fields mean filters on real values, not on guessed metadata.

Ranking you can inspect

See why a result scored where it did, which matters when someone disputes an answer.

Sub-second at scale

In memory across tens of terabytes, so the search box stays usable.

Questions for developers

The things worth asking first

Can I use my own embedding model?

Yes. Use a bundled local model, a hosted provider, an OpenAI compatible endpoint, or vectors you compute yourself. A different model means a new embedding index, and the graph is not touched.

How are permissions kept current?

Connectors write each record's access as team and user restrictions, and Studio checks them on every query, down to node types and fields. A revoked access applies on the next query after the connector syncs it, with no reindex.

Is there an API?

Yes. Curiosity.Library gives you the graph and its queries from C# or Python, and you publish your own REST endpoints in C# inside Studio. Studio also serves an MCP server and an OpenAI compatible chat API.

Your data. Your infrastructure.

Search everything, once