Documentation
¶
Index ¶
- Constants
- Variables
- func ApplyFilters(docs []interfaces.Document, filterGroup MetadataFilterGroup) []interfaces.Document
- func CalculateSimilarity(vec1, vec2 []float32, metric string) (float32, error)
- func CreateWeaviateAndFilter(conditions ...map[string]interface{}) map[string]interface{}
- func CreateWeaviateFilter(field string, operator string, value interface{}) map[string]interface{}
- func CreateWeaviateOrFilter(conditions ...map[string]interface{}) map[string]interface{}
- func FilterToMap(group MetadataFilterGroup) map[string]interface{}
- func FilterToWeaviateFormat(group MetadataFilterGroup) map[string]interface{}
- type Client
- type EmbeddingConfig
- type GeminiEmbedder
- func (e *GeminiEmbedder) CalculateSimilarity(vec1, vec2 []float32, metric string) (float32, error)
- func (e *GeminiEmbedder) Embed(ctx context.Context, text string) ([]float32, error)
- func (e *GeminiEmbedder) EmbedBatch(ctx context.Context, texts []string) ([][]float32, error)
- func (e *GeminiEmbedder) EmbedBatchWithConfig(ctx context.Context, texts []string, config EmbeddingConfig) ([][]float32, error)
- func (e *GeminiEmbedder) EmbedWithConfig(ctx context.Context, text string, config EmbeddingConfig) ([]float32, error)
- func (e *GeminiEmbedder) GetConfig() EmbeddingConfig
- func (e *GeminiEmbedder) GetModel() string
- type GeminiEmbedderOption
- func WithGeminiAPIKey(apiKey string) GeminiEmbedderOption
- func WithGeminiBackend(backend genai.Backend) GeminiEmbedderOption
- func WithGeminiClient(existing *genai.Client) GeminiEmbedderOption
- func WithGeminiConfig(config EmbeddingConfig) GeminiEmbedderOption
- func WithGeminiCredentialsFile(credentialsFile string) GeminiEmbedderOption
- func WithGeminiCredentialsJSON(credentialsJSON []byte) GeminiEmbedderOption
- func WithGeminiLocation(location string) GeminiEmbedderOption
- func WithGeminiLogger(logger logging.Logger) GeminiEmbedderOption
- func WithGeminiModel(model string) GeminiEmbedderOption
- func WithGeminiProjectID(projectID string) GeminiEmbedderOption
- func WithGeminiTaskType(taskType string) GeminiEmbedderOption
- type MetadataFilter
- type MetadataFilterGroup
- type OpenAIEmbedder
- func (e *OpenAIEmbedder) CalculateSimilarity(vec1, vec2 []float32, metric string) (float32, error)
- func (e *OpenAIEmbedder) Embed(ctx context.Context, text string) ([]float32, error)
- func (e *OpenAIEmbedder) EmbedBatch(ctx context.Context, texts []string) ([][]float32, error)
- func (e *OpenAIEmbedder) EmbedBatchWithConfig(ctx context.Context, texts []string, config EmbeddingConfig) ([][]float32, error)
- func (e *OpenAIEmbedder) EmbedWithConfig(ctx context.Context, text string, config EmbeddingConfig) ([]float32, error)
- func (e *OpenAIEmbedder) GetConfig() EmbeddingConfig
- func (e *OpenAIEmbedder) GetModel() string
Constants ¶
const ( // ModelTextEmbedding004 is the latest text embedding model (768 dimensions) ModelTextEmbedding004 = "text-embedding-004" // ModelTextEmbedding005 is the newest text embedding model (768 dimensions) ModelTextEmbedding005 = "text-embedding-005" // ModelTextMultilingualEmbedding002 is for multilingual text (768 dimensions) ModelTextMultilingualEmbedding002 = "text-multilingual-embedding-002" // DefaultGeminiEmbeddingModel is the default embedding model DefaultGeminiEmbeddingModel = ModelTextEmbedding004 )
Gemini embedding model constants
const ( // ModelTextEmbedding3Small is the smaller, faster OpenAI embedding model (1536 dimensions by default) ModelTextEmbedding3Small = "text-embedding-3-small" // ModelTextEmbedding3Large is the larger, more accurate OpenAI embedding model (3072 dimensions by default) ModelTextEmbedding3Large = "text-embedding-3-large" // ModelTextEmbeddingAda002 is the legacy OpenAI embedding model (1536 dimensions) ModelTextEmbeddingAda002 = "text-embedding-ada-002" // DefaultOpenAIEmbeddingModel is the default OpenAI embedding model DefaultOpenAIEmbeddingModel = ModelTextEmbedding3Small )
OpenAI embedding model constants
Variables ¶
var DefaultTimeFormats = []string{ time.RFC3339, "2006-01-02T15:04:05", "2006-01-02 15:04:05", "2006-01-02", }
DefaultTimeFormats provides a list of common time formats for parsing
Functions ¶
func ApplyFilters ¶
func ApplyFilters(docs []interfaces.Document, filterGroup MetadataFilterGroup) []interfaces.Document
ApplyFilters filters a list of documents based on metadata filters
func CalculateSimilarity ¶ added in v0.2.18
CalculateSimilarity is a standalone function to calculate similarity between two embeddings
func CreateWeaviateAndFilter ¶
CreateWeaviateAndFilter creates a Weaviate filter with AND logic for multiple conditions. This is a convenience function for common filter cases.
func CreateWeaviateFilter ¶
CreateWeaviateFilter creates a simple Weaviate filter for a single field. This is a convenience function for simple filter cases. For complex filters, use MetadataFilterGroup and FilterToWeaviateFormat.
func CreateWeaviateOrFilter ¶
CreateWeaviateOrFilter creates a Weaviate filter with OR logic for multiple conditions. This is a convenience function for common filter cases.
func FilterToMap ¶
func FilterToMap(group MetadataFilterGroup) map[string]interface{}
FilterToMap converts a MetadataFilterGroup to a map for use with vector store filters Deprecated: This function produces a format that may not be compatible with all vector stores. For Weaviate, use FilterToWeaviateFormat instead.
func FilterToWeaviateFormat ¶
func FilterToWeaviateFormat(group MetadataFilterGroup) map[string]interface{}
FilterToWeaviateFormat converts a MetadataFilterGroup to a Weaviate-compatible filter format. This is the recommended function to use for Weaviate vector store filters.
Types ¶
type Client ¶
type Client interface {
// Embed generates an embedding for the given text
Embed(ctx context.Context, text string) ([]float32, error)
// EmbedWithConfig generates an embedding with custom configuration
EmbedWithConfig(ctx context.Context, text string, config EmbeddingConfig) ([]float32, error)
// EmbedBatch generates embeddings for multiple texts
EmbedBatch(ctx context.Context, texts []string) ([][]float32, error)
// EmbedBatchWithConfig generates embeddings for multiple texts with custom configuration
EmbedBatchWithConfig(ctx context.Context, texts []string, config EmbeddingConfig) ([][]float32, error)
// CalculateSimilarity calculates the similarity between two embeddings
CalculateSimilarity(vec1, vec2 []float32, metric string) (float32, error)
}
Client defines the interface for an embedding client
type EmbeddingConfig ¶
type EmbeddingConfig struct {
// Model is the embedding model to use
Model string
// Dimensions specifies the dimensionality of the embedding vectors
// Only supported by some models (e.g., text-embedding-3-*)
Dimensions int
// EncodingFormat specifies the format of the embedding vectors
// Options: "float", "base64"
EncodingFormat string
// Truncation controls how the input text is handled if it exceeds the model's token limit
// Options: "none" (error on overflow), "truncate" (truncate to limit)
Truncation string
// SimilarityMetric specifies the similarity metric to use when comparing embeddings
// Options: "cosine" (default), "euclidean", "dot_product"
SimilarityMetric string
// SimilarityThreshold specifies the minimum similarity score for search results
SimilarityThreshold float32
// UserID is an optional identifier for tracking embedding usage
UserID string
}
EmbeddingConfig contains configuration options for embedding generation
func DefaultEmbeddingConfig ¶
func DefaultEmbeddingConfig(model string) EmbeddingConfig
DefaultEmbeddingConfig returns a default configuration for embedding generation
func DefaultGeminiEmbeddingConfig ¶ added in v0.2.18
func DefaultGeminiEmbeddingConfig(model string) EmbeddingConfig
DefaultGeminiEmbeddingConfig returns a default configuration for Gemini embedding generation
type GeminiEmbedder ¶ added in v0.2.18
type GeminiEmbedder struct {
// contains filtered or unexported fields
}
GeminiEmbedder implements embedding generation using Google Gemini/Vertex AI API
func NewGeminiEmbedder ¶ added in v0.2.18
func NewGeminiEmbedder(ctx context.Context, options ...GeminiEmbedderOption) (*GeminiEmbedder, error)
NewGeminiEmbedder creates a new Gemini embedder with the provided options
func (*GeminiEmbedder) CalculateSimilarity ¶ added in v0.2.18
func (e *GeminiEmbedder) CalculateSimilarity(vec1, vec2 []float32, metric string) (float32, error)
CalculateSimilarity calculates the similarity between two embeddings
func (*GeminiEmbedder) Embed ¶ added in v0.2.18
Embed generates an embedding using Gemini API with default configuration
func (*GeminiEmbedder) EmbedBatch ¶ added in v0.2.18
EmbedBatch generates embeddings for multiple texts using default configuration
func (*GeminiEmbedder) EmbedBatchWithConfig ¶ added in v0.2.18
func (e *GeminiEmbedder) EmbedBatchWithConfig(ctx context.Context, texts []string, config EmbeddingConfig) ([][]float32, error)
EmbedBatchWithConfig generates embeddings for multiple texts with custom configuration
func (*GeminiEmbedder) EmbedWithConfig ¶ added in v0.2.18
func (e *GeminiEmbedder) EmbedWithConfig(ctx context.Context, text string, config EmbeddingConfig) ([]float32, error)
EmbedWithConfig generates an embedding using Gemini API with custom configuration
func (*GeminiEmbedder) GetConfig ¶ added in v0.2.18
func (e *GeminiEmbedder) GetConfig() EmbeddingConfig
GetConfig returns the current configuration
func (*GeminiEmbedder) GetModel ¶ added in v0.2.18
func (e *GeminiEmbedder) GetModel() string
GetModel returns the model name being used
type GeminiEmbedderOption ¶ added in v0.2.18
type GeminiEmbedderOption func(*GeminiEmbedder)
GeminiEmbedderOption represents an option for configuring the Gemini embedder
func WithGeminiAPIKey ¶ added in v0.2.18
func WithGeminiAPIKey(apiKey string) GeminiEmbedderOption
WithGeminiAPIKey sets the API key for Gemini API backend
func WithGeminiBackend ¶ added in v0.2.18
func WithGeminiBackend(backend genai.Backend) GeminiEmbedderOption
WithGeminiBackend sets the backend for the Gemini embedder
func WithGeminiClient ¶ added in v0.2.18
func WithGeminiClient(existing *genai.Client) GeminiEmbedderOption
WithGeminiClient injects an already initialized genai.Client
func WithGeminiConfig ¶ added in v0.2.18
func WithGeminiConfig(config EmbeddingConfig) GeminiEmbedderOption
WithGeminiConfig sets the embedding configuration for the Gemini embedder
func WithGeminiCredentialsFile ¶ added in v0.2.18
func WithGeminiCredentialsFile(credentialsFile string) GeminiEmbedderOption
WithGeminiCredentialsFile sets the path to a service account key file for Vertex AI authentication
func WithGeminiCredentialsJSON ¶ added in v0.2.18
func WithGeminiCredentialsJSON(credentialsJSON []byte) GeminiEmbedderOption
WithGeminiCredentialsJSON sets the service account key JSON bytes for Vertex AI authentication
func WithGeminiLocation ¶ added in v0.2.18
func WithGeminiLocation(location string) GeminiEmbedderOption
WithGeminiLocation sets the GCP location for Vertex AI backend
func WithGeminiLogger ¶ added in v0.2.18
func WithGeminiLogger(logger logging.Logger) GeminiEmbedderOption
WithGeminiLogger sets the logger for the Gemini embedder
func WithGeminiModel ¶ added in v0.2.18
func WithGeminiModel(model string) GeminiEmbedderOption
WithGeminiModel sets the embedding model for the Gemini embedder
func WithGeminiProjectID ¶ added in v0.2.18
func WithGeminiProjectID(projectID string) GeminiEmbedderOption
WithGeminiProjectID sets the GCP project ID for Vertex AI backend
func WithGeminiTaskType ¶ added in v0.2.18
func WithGeminiTaskType(taskType string) GeminiEmbedderOption
WithGeminiTaskType sets the task type for better embedding optimization Valid values: "RETRIEVAL_QUERY", "RETRIEVAL_DOCUMENT", "SEMANTIC_SIMILARITY", "CLASSIFICATION", "CLUSTERING", "QUESTION_ANSWERING", "FACT_VERIFICATION"
type MetadataFilter ¶
type MetadataFilter struct {
// Field is the metadata field to filter on
Field string
// Operator is the comparison operator
// Supported operators: "=", "!=", ">", ">=", "<", "<=", "contains", "in", "not_in"
Operator string
// Value is the value to compare against
Value interface{}
}
MetadataFilter represents a filter condition for document metadata. It defines a single condition to be applied on a specific field. Example: field="word_count", operator=">", value=10
func NewMetadataFilter ¶
func NewMetadataFilter(field, operator string, value interface{}) MetadataFilter
NewMetadataFilter creates a new metadata filter
type MetadataFilterGroup ¶
type MetadataFilterGroup struct {
// Filters is the list of filters in this group
Filters []MetadataFilter
// SubGroups is the list of sub-groups in this group
SubGroups []MetadataFilterGroup
// Operator is the logical operator to apply between filters
// Supported operators: "and", "or"
Operator string
}
MetadataFilterGroup represents a group of filters with a logical operator. It allows for complex nested conditions with AND/OR logic. Example: (word_count > 10 AND type = "article") OR (category IN ["news", "blog"])
func NewMetadataFilterGroup ¶
func NewMetadataFilterGroup(operator string, filters ...MetadataFilter) MetadataFilterGroup
NewMetadataFilterGroup creates a new metadata filter group
func (*MetadataFilterGroup) AddFilter ¶
func (g *MetadataFilterGroup) AddFilter(filter MetadataFilter)
AddFilter adds a filter to the group
func (*MetadataFilterGroup) AddSubGroup ¶
func (g *MetadataFilterGroup) AddSubGroup(subGroup MetadataFilterGroup)
AddSubGroup adds a sub-group to the group
type OpenAIEmbedder ¶
type OpenAIEmbedder struct {
// contains filtered or unexported fields
}
OpenAIEmbedder implements embedding generation using OpenAI API
func NewOpenAIEmbedder ¶
func NewOpenAIEmbedder(apiKey, model string) *OpenAIEmbedder
NewOpenAIEmbedder creates a new OpenAIEmbedder instance with default configuration
func NewOpenAIEmbedderWithConfig ¶
func NewOpenAIEmbedderWithConfig(apiKey string, config EmbeddingConfig) *OpenAIEmbedder
NewOpenAIEmbedderWithConfig creates a new OpenAIEmbedder with custom configuration
func (*OpenAIEmbedder) CalculateSimilarity ¶
func (e *OpenAIEmbedder) CalculateSimilarity(vec1, vec2 []float32, metric string) (float32, error)
CalculateSimilarity calculates the similarity between two embeddings
func (*OpenAIEmbedder) Embed ¶
Embed generates an embedding using OpenAI API with default configuration
func (*OpenAIEmbedder) EmbedBatch ¶
EmbedBatch generates embeddings for multiple texts using default configuration
func (*OpenAIEmbedder) EmbedBatchWithConfig ¶
func (e *OpenAIEmbedder) EmbedBatchWithConfig(ctx context.Context, texts []string, config EmbeddingConfig) ([][]float32, error)
EmbedBatchWithConfig generates embeddings for multiple texts with custom configuration
func (*OpenAIEmbedder) EmbedWithConfig ¶
func (e *OpenAIEmbedder) EmbedWithConfig(ctx context.Context, text string, config EmbeddingConfig) ([]float32, error)
EmbedWithConfig generates an embedding using OpenAI API with custom configuration
func (*OpenAIEmbedder) GetConfig ¶
func (e *OpenAIEmbedder) GetConfig() EmbeddingConfig
GetConfig returns the current configuration
func (*OpenAIEmbedder) GetModel ¶ added in v0.2.18
func (e *OpenAIEmbedder) GetModel() string
GetModel returns the model name being used