joaomdmoura / crewAI

Framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.
https://crewai.com
MIT License
17.12k stars 2.33k forks source link

RAG implementation in CREWAI #247

Open NeethanShetty07 opened 4 months ago

NeethanShetty07 commented 4 months ago

Hi,

Is there any method implemented which we can link RAG method with agents.

ZmeiGorynych commented 4 months ago

You could run off this branch https://github.com/joaomdmoura/crewAI/pull/246 and use a LangChain agent with RAG? :)

slavakurilyak commented 4 months ago

Similar to issue #18

RAG with tools example here: https://mer.vin/2024/02/crewai-rag-using-tools/

RAG will be one of the first tools on our crew toolkit

-- Joao (@joaomdmoura)

slavakurilyak commented 4 months ago

RAG is now part of crewai-tools

NeethanShetty07 commented 4 months ago

Hi @slavakurilyak Thanks for the response

NeethanShetty07 commented 4 months ago

Can we attach any pdf or any document and do RAG on these documents using Agents ??

ilyasudakov commented 4 months ago

Can we attach any pdf or any document and do RAG on these documents using Agents ??

@NeethanShetty07 Yeah, I got it working, here's a simple example with .txt file:

from crewai_tools.tools import TXTSearchTool
rag_tool = TXTSearchTool(txt='./sample_data/test.txt')

data_analyst = Agent(
  role='Data Analyst',
  goal='You perfectly know how to analyze any data using provided txt file and searching info via RAG tool',
  backstory='You are data expert',
  verbose=True,
  allow_delegation=False,
  tools=[rag_tool]
)

test_task = Task(
  description="Show me a company name",
  tools=[rag_tool],
  agent=data_analyst
)

test_task.execute()
Neethan54 commented 3 months ago

But i have AzureOPENAI key , But TXTSearchTool is asking OPENAI key for the process , how to do solve this issue?

P7201 commented 3 months ago

I am having the exact same problem as Neethan54 can anyone please let us know how we pass in the key from AzureOpenAI for the TXTSearchtool?

SL13PNIR commented 2 months ago

Bump.

Do tools need Open AI keys? I'm trying to use the PDFSearchTool with Mistral, assumed I'd only need OpenAI keys for using an Open AI llm.

thekizoch commented 2 months ago

Im having the same issue as @Neethan54 and @P7201 , for Azure OpenAI for PDFSearchTool

manojselvakumar commented 1 month ago

I'd like to understand the same. How to use Azure OpenAI for PDFSearchTool?

ItzmeAkash commented 1 month ago

how to use groq and other embeddings on PDFSearchTool anyone knows??

theholymath commented 3 weeks ago

It seems embedchain is making changes to their config for embeddings. Does this help get PDFSearchTool working for Azure? Is there an example of how to get the config working with an Azure subscription?

cbarkinozer commented 2 weeks ago

From the theory, the way tools (function calling) work is by comparing the request's embedding with the tool's description's embedding (vector distance measurement). Therefore tools require an embedding_model. I checked the source code and did the following. The CrewAI framework checks if there is an embedding_model_config given and if not it tries to use OpenAI Embeddings by default. To solve this I used a config dict you can see from the below example:

    rag_tool = DOCXSearchTool(
        docx='C:\\Repos\\myproject\\myfolders\\mydocument.docx',
        config={"embedding_model": {
            "provider": "huggingface",
            "config": { "model": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"}
            }
        }
    )

Later, the CrewAI framework asked me to download the "docx2txt" package to work, which you can do by running this command: "pip install docx2txt" and it worked without a problem afterwards.

You can change the model with another HuggingFace embedding model and it should work.

I also had a similar problem with the memory which I solved similarly: https://github.com/joaomdmoura/crewAI/issues/769#issuecomment-2190041975