dspy icon indicating copy to clipboard operation
dspy copied to clipboard

Teleprompters with Retrieve

Open Dyke-F opened this issue 11 months ago • 2 comments

Hi, I am using

retriever_model = ChromadbRM( collection_name='onkopedia_en', persist_directory='./chroma_db', openai_embed_model=DEFAULT_EMBED_MODEL, k=top_k )

and wanted to use

from dspy.teleprompt import BootstrapFewShot teleprompter = BootstrapFewShot(metric=MetricWrapper, max_bootstrapped_demos=1, max_rounds=1) compiled_rag = teleprompter.compile(rag, trainset=trainset)

But get: TypeError: cannot pickle 'sqlite3.Connection' object

Any workarounds on how to use a retrieval database with the optimizers?

Dyke-F avatar Mar 01 '24 10:03 Dyke-F

Declare the retrieval model outside the class and try?

okhat avatar Mar 01 '24 11:03 okhat

Here is my code for chromadb

    models["gpt-35-turbo"], models["gpt-4"] = load_models()

    db_file_or_url = os.path.expanduser(db_file_or_url)

    embedding_function = OpenAIEmbeddingFunction(
        api_key=os.environ.get("OPENAI_API_KEY"),
        model_name="text-embedding-ada-002",
        api_base=openai.api_base,
        api_type=openai.api_type,
        api_version=openai.api_version,
    )

    rm = ChromadbRM(
        collection_name, db_file_or_url, embedding_function=embedding_function, k=num_k
    )

    dspy.settings.configure(rm=rm, lm=models[lm_model])

insop avatar Mar 02 '24 03:03 insop

Hi works perfectly outside of the class! Thank you ! Paper coming soon :) @okhat

Dyke-F avatar Mar 05 '24 16:03 Dyke-F