Combines both vss
and bm25
search and returns the
union of chunks retrieved by both methods.
Arguments
- store
A
RagnarStore
object returned byragnar_store_connect()
orragnar_store_create()
.- text
Character. Query string to match.
- top_k
Integer. Number of nearest entries to find per method.
- ...
Additional arguments passed to the lower-level retrieval functions.
- deoverlap
Logical. If
TRUE
(default) andstore@version == 2
, overlapping chunks are merged withchunks_deoverlap()
.
See also
Other ragnar_retrieve:
ragnar_retrieve_bm25()
,
ragnar_retrieve_vss()
,
ragnar_retrieve_vss_and_bm25()
Examples
if (FALSE) { # (rlang::is_installed("dbplyr") && nzchar(Sys.getenv("OPENAI_API_KEY")))
## Build a small store with categories
store <- ragnar_store_create(
embed = \(x) ragnar::embed_openai(x, model = "text-embedding-3-small"),
extra_cols = data.frame(category = character()),
version = 1 # store text chunks directly
)
ragnar_store_insert(
store,
data.frame(
category = c(rep("pets", 3), rep("dessert", 3)),
text = c("playful puppy", "sleepy kitten", "curious hamster",
"chocolate cake", "strawberry tart", "vanilla ice cream")
)
)
ragnar_store_build_index(store)
# Top 3 chunks without filtering
ragnar_retrieve(store, "sweet")
# Combine filter with similarity search
ragnar_retrieve(store, "sweet", filter = category == "dessert")
}