Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion api/rag.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
import weakref
import re
from dataclasses import dataclass
from typing import Any, List, Tuple, Dict
Expand Down Expand Up @@ -242,14 +243,17 @@ def __init__(self, provider="google", model=None, use_s3: bool = False): # noqa
self.memory = Memory()
self.embedder = get_embedder()

self_weakref = weakref.ref(self)
# Patch: ensure query embedding is always single string for Ollama
def single_string_embedder(query):
# Accepts either a string or a list, always returns embedding for a single string
if isinstance(query, list):
if len(query) != 1:
raise ValueError("Ollama embedder only supports a single string")
query = query[0]
return self.embedder(input=query)
instance = self_weakref()
assert instance is not None, "RAG instance is no longer available, but the query embedder was called."
return instance.embedder(input=query)

# Use single string embedder for Ollama, regular embedder for others
self.query_embedder = single_string_embedder if self.is_ollama_embedder else self.embedder
Expand Down