Embedding Policies¶
Package: github.com/emergent-company/emergent.memory/apps/server/pkg/sdk/embeddingpolicies
Client field: client.EmbeddingPolicies
Embedding policies control how graph objects are vectorized: which object types to embed, which fields to use, the text template, and the embedding model. Multiple active policies can coexist in a project.
Methods¶
List¶
Lists all embedding policies for the current project.
GET /api/graph/embedding-policies?project_id=<projectID>
GetByID¶
Returns a single policy by ID.
GET /api/graph/embedding-policies/:id?project_id=<projectID>
Create¶
func (c *Client) Create(ctx context.Context, req *CreateEmbeddingPolicyRequest) (*EmbeddingPolicy, error)
Creates a new embedding policy.
POST /api/graph/embedding-policies
Update¶
func (c *Client) Update(ctx context.Context, policyID string, req *UpdateEmbeddingPolicyRequest) (*EmbeddingPolicy, error)
Updates an existing embedding policy. All fields are optional — only supplied fields are changed.
PUT /api/graph/embedding-policies/:id?project_id=<projectID>
Delete¶
Deletes an embedding policy.
DELETE /api/graph/embedding-policies/:id?project_id=<projectID>
Types¶
EmbeddingPolicy¶
type EmbeddingPolicy struct {
ID string `json:"id"`
ProjectID string `json:"project_id"`
Name string `json:"name"`
Description *string `json:"description,omitempty"`
ObjectTypes []string `json:"object_types"`
Fields []string `json:"fields"`
Template string `json:"template"`
Model string `json:"model"`
Active bool `json:"active"`
ChunkingConfig any `json:"chunking_config,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
| Field | Description |
|---|---|
ObjectTypes |
Object type names this policy applies to |
Fields |
Object property names to include in the embedding text |
Template |
Go text/template string for composing the embedding input |
Model |
Embedding model identifier (e.g. "text-embedding-004") |
Active |
When false the policy is disabled but not deleted |
ChunkingConfig |
Optional chunking configuration (provider-specific JSON) |
CreateEmbeddingPolicyRequest¶
type CreateEmbeddingPolicyRequest struct {
ProjectID string `json:"projectId"`
Name string `json:"name"`
Description *string `json:"description,omitempty"`
ObjectTypes []string `json:"object_types"`
Fields []string `json:"fields"`
Template string `json:"template"`
Model string `json:"model"`
Active *bool `json:"active,omitempty"`
ChunkingConfig any `json:"chunking_config,omitempty"`
}
UpdateEmbeddingPolicyRequest¶
type UpdateEmbeddingPolicyRequest struct {
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
ObjectTypes []string `json:"object_types,omitempty"`
Fields []string `json:"fields,omitempty"`
Template *string `json:"template,omitempty"`
Model *string `json:"model,omitempty"`
Active *bool `json:"active,omitempty"`
ChunkingConfig any `json:"chunking_config,omitempty"`
}
Example¶
active := true
policy, err := client.EmbeddingPolicies.Create(ctx, &embeddingpolicies.CreateEmbeddingPolicyRequest{
ProjectID: "proj-abc",
Name: "person-embeddings",
ObjectTypes: []string{"Person"},
Fields: []string{"name", "bio", "skills"},
Template: "{{.name}}: {{.bio}}. Skills: {{.skills}}",
Model: "text-embedding-004",
Active: &active,
})
if err != nil {
log.Fatal(err)
}
fmt.Println("Created policy:", policy.ID)
// Disable without deleting
boolFalse := false
_, err = client.EmbeddingPolicies.Update(ctx, policy.ID, &embeddingpolicies.UpdateEmbeddingPolicyRequest{
Active: &boolFalse,
})