Embedding converts each chunk into a vector: numbers that capture meaning, so similar meaning lands close together in search.
Create an embedder, then embed:
embedder = rag.embedder(provider="voyage", model="voyage-3", input_type="document")
result = rag.embed(chunks=chunk_result.items, embedder=embedder, batch_size=64)
result.items # chunks with an added "embedding" field
Match input_type to the job. Use "document" when embedding content to store, and "query" when embedding a search query. Mismatching them hurts retrieval quality.
Providers
| Provider | Extra | Models |
|---|
| Voyage | ragrails[voyage] | voyage-3 (default), voyage-3-lite, voyage-3-large |
Need a different provider? Register your own with register_embedder().
Use the same model for indexing and querying. Vectors from different models aren’t comparable.
batch_size controls how many chunks go in one request. Raise it to cut API calls; lower it if you hit rate limits.
Reference
Full parameters: SDK embedding · CLI · REST.