Skip to main content

Embeddings

Generate and store text embeddings for semantic search and RAG applications.

Overview​

Embeddings are numerical representations of text that capture semantic meaning. LLM Client can:

  • Generate embeddings using any compatible model
  • Store embeddings in vector databases
  • Process files with intelligent chunking
  • Enable semantic search and RAG

Quick Start​

# Generate embeddings (output to console)
lc embed -m text-embedding-3-small "Your text here"

# Store in vector database
lc embed -m text-embedding-3-small -v knowledge "Important information"

# Embed a file
lc embed -m text-embedding-3-small -v docs -f README.md

Command: lc embed (alias: lc e)​

Options​

  • -m, --model <MODEL> - Embedding model to use (required)
  • -v, --vector-db <NAME> - Vector database to store in (optional)
  • -f, --file <PATH> - File(s) to embed (optional)
  • -p, --provider <NAME> - Provider to use (optional)

Embedding Models​

List available embedding models:

lc models embed
lc m e

Common models:

  • text-embedding-3-small (OpenAI) - Fast, efficient
  • text-embedding-3-large (OpenAI) - Higher quality
  • embed-english-v3.0 (Cohere) - English-optimized
  • embed-multilingual-v3.0 (Cohere) - Multi-language

Text Embedding​

Direct Text​

Embed a single piece of text:

# Output embeddings to console
lc embed -m text-embedding-3-small "Machine learning is fascinating"

# Store in database
lc embed -m text-embedding-3-small -v ml-knowledge "Neural networks use layers"

Multiple Texts​

Store multiple embeddings in a database:

# Build a knowledge base
lc embed -m text-embedding-3-small -v knowledge "Fact 1: Python is popular for ML"
lc embed -m text-embedding-3-small -v knowledge "Fact 2: TensorFlow is a framework"
lc embed -m text-embedding-3-small -v knowledge "Fact 3: GPUs accelerate training"

File Embedding​

Single File​

Embed an entire file with automatic chunking:

lc embed -m text-embedding-3-small -v docs -f README.md

Multiple Files​

Use glob patterns or comma-separated lists:

# Glob pattern
lc embed -m text-embedding-3-small -v docs -f "*.md"
lc embed -m text-embedding-3-small -v docs -f "docs/**/*.txt"

# Multiple specific files
lc embed -m text-embedding-3-small -v docs -f "file1.md,file2.txt,file3.py"

How File Chunking Works​

  1. Chunk Size: ~1200 characters per chunk
  2. Overlap: 200 characters between chunks
  3. Boundaries: Respects sentences and paragraphs
  4. Metadata: Stores file path and chunk info

Example output:

Processing file: README.md
✓ Chunk 1/5 embedded
✓ Chunk 2/5 embedded
✓ Chunk 3/5 embedded
✓ Chunk 4/5 embedded
✓ Chunk 5/5 embedded
Successfully embedded 5 chunks from README.md

Supported File Types​

Text Documents​

  • .txt, .md, .markdown
  • .rst, .org, .tex
  • .rtf

Code Files​

  • .py, .js, .ts, .java
  • .cpp, .c, .h, .hpp
  • .go, .rs, .rb, .php
  • .swift, .kt, .scala

Web Files​

  • .html, .css, .scss
  • .xml, .json, .yaml, .yml

Configuration​

  • .toml, .ini, .cfg, .conf
  • .env, .properties

Other​

  • .sql, .graphql
  • .dockerfile, .makefile
  • .sh, .bash, .zsh

Binary files are automatically filtered out.

Provider Selection​

Default Provider​

Uses the embedding model's default provider:

# Uses OpenAI for text-embedding-3-small
lc embed -m text-embedding-3-small -v docs "content"

Specific Provider​

Override with a different provider:

# Use Cohere
lc embed -p cohere -m embed-english-v3.0 -v docs "content"

# Use local provider
lc embed -p ollama -m nomic-embed-text -v local "content"

Best Practices​

1. Model Selection​

Choose based on your needs:

  • Speed: text-embedding-3-small
  • Quality: text-embedding-3-large
  • Multilingual: embed-multilingual-v3.0
  • Local/Private: Ollama models

2. Chunk Size Optimization​

Default chunking works well, but consider:

  • Technical docs: Smaller chunks (better precision)
  • Narrative text: Larger chunks (better context)
  • Code: Respect function boundaries

3. Database Organization​

Create purpose-specific databases:

# Separate databases by content type
lc embed -v technical-docs -f "docs/api/*.md"
lc embed -v tutorials -f "docs/tutorials/*.md"
lc embed -v code-examples -f "examples/**/*.py"

4. Regular Updates​

Keep embeddings current:

# Re-embed changed files
lc embed -v docs -f "updated-doc.md"

# Process new files
lc embed -v docs -f "new-docs/*.md"

Viewing Embeddings​

Check Database Content​

lc vectors info docs

Shows:

  • Total entries
  • Model used
  • Recent additions
  • File metadata

Search Similar Content​

lc similar -v docs "search query"

Performance Tips​

Batch Processing​

Process multiple files efficiently:

# Good: Single command
lc embed -m text-embedding-3-small -v docs -f "*.md"

# Less efficient: Multiple commands
lc embed -m text-embedding-3-small -v docs -f "file1.md"
lc embed -m text-embedding-3-small -v docs -f "file2.md"

Large Files​

For very large files:

  1. Consider splitting beforehand
  2. Monitor memory usage
  3. Use streaming processing (automatic)

API Rate Limits​

  • Respect provider rate limits
  • Use smaller models for bulk processing
  • Consider local models for large volumes

Troubleshooting​

"Model not found"​

# List available embedding models
lc models embed

# Use exact model name
lc embed -m text-embedding-3-small "text"

"File not found"​

  • Check file path relative to current directory
  • Use quotes for paths with spaces
  • Verify glob patterns with ls

"Binary file skipped"​

This is normal - binary files are automatically filtered. Only text files are processed.

"Chunk too large"​

Rare, but can happen with files containing very long lines. The system will automatically handle this.

Next Steps​