response = client.embeddings.create( model="gemini:text-embedding-004", input=[ "Machine learning is a subset of AI", "Deep learning uses neural networks", "Natural language processing enables text understanding" ])for i, data in enumerate(response.data): print(f"Text {i}: {len(data.embedding)} dimensions")
# Embed user preferences and item descriptionsuser_pref = "I like action movies with great CGI"items = ["Movie A: Action-packed blockbuster", "Movie B: Romantic drama", ...]response = client.embeddings.create( model="gemini:text-embedding-004", input=[user_pref] + items)user_emb = response.data[0].embeddingitem_embs = [d.embedding for d in response.data[1:]]# Rank by similarityscores = [cosine_similarity(user_emb, item) for item in item_embs]top_items = sorted(zip(items, scores), key=lambda x: x[1], reverse=True)
Process multiple texts in a single request for better throughput:
Copy
Ask AI
# Good: Single request for 10 textsresponse = client.embeddings.create( model="gemini:text-embedding-004", input=texts # List of 10 texts)# Avoid: 10 separate requestsfor text in texts: response = client.embeddings.create( model="gemini:text-embedding-004", input=text )
Caching
Cache embeddings for frequently used texts:
Copy
Ask AI
import pickle# Save embeddingswith open('embeddings.pkl', 'wb') as f: pickle.dump(embeddings, f)# Load cached embeddingswith open('embeddings.pkl', 'rb') as f: embeddings = pickle.load(f)
Model Selection
Choose appropriate model for your use case:
Gemini: Best for multilingual and semantic search
Ollama: Best for privacy and offline usage
switchAI: Best for unified access to multiple providers