mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-20 05:18:16 +00:00
118 lines
3.1 KiB
Markdown
118 lines
3.1 KiB
Markdown
# Elasticsearch Integration
|
|
|
|
CrewAI supports using Elasticsearch as an alternative to ChromaDB for RAG (Retrieval Augmented Generation) storage. This allows you to leverage Elasticsearch's powerful search capabilities and scalability for your AI agents.
|
|
|
|
## Installation
|
|
|
|
To use Elasticsearch with CrewAI, you need to install the Elasticsearch Python client:
|
|
|
|
```bash
|
|
pip install elasticsearch
|
|
```
|
|
|
|
## Using Elasticsearch for Memory
|
|
|
|
You can configure your crew to use Elasticsearch for memory storage:
|
|
|
|
```python
|
|
from crewai import Agent, Crew, Task
|
|
|
|
# Create agents and tasks
|
|
agent = Agent(
|
|
role="Researcher",
|
|
goal="Research a topic",
|
|
backstory="You are a researcher who loves to find information.",
|
|
)
|
|
|
|
task = Task(
|
|
description="Research about AI",
|
|
expected_output="Information about AI",
|
|
agent=agent,
|
|
)
|
|
|
|
# Create a crew with Elasticsearch memory
|
|
crew = Crew(
|
|
agents=[agent],
|
|
tasks=[task],
|
|
memory_config={
|
|
"provider": "elasticsearch",
|
|
"host": "localhost", # Optional, defaults to localhost
|
|
"port": 9200, # Optional, defaults to 9200
|
|
"username": "user", # Optional
|
|
"password": "pass", # Optional
|
|
},
|
|
)
|
|
|
|
# Execute the crew
|
|
result = crew.kickoff()
|
|
```
|
|
|
|
## Using Elasticsearch for Knowledge
|
|
|
|
You can also use Elasticsearch for knowledge storage:
|
|
|
|
```python
|
|
from crewai import Agent, Crew, Task
|
|
from crewai.knowledge import Knowledge
|
|
from crewai.knowledge.source.string_knowledge_source import StringKnowledgeSource
|
|
|
|
# Create knowledge with Elasticsearch storage
|
|
content = "AI is a field of computer science that focuses on creating machines that can perform tasks that typically require human intelligence."
|
|
string_source = StringKnowledgeSource(
|
|
content=content, metadata={"topic": "AI"}
|
|
)
|
|
|
|
knowledge = Knowledge(
|
|
collection_name="test",
|
|
sources=[string_source],
|
|
storage_provider="elasticsearch", # Use Elasticsearch
|
|
# Optional Elasticsearch configuration
|
|
host="localhost",
|
|
port=9200,
|
|
username="user",
|
|
password="pass",
|
|
)
|
|
|
|
# Create an agent with the knowledge
|
|
agent = Agent(
|
|
role="AI Expert",
|
|
goal="Explain AI",
|
|
backstory="You are an AI expert who loves to explain AI concepts.",
|
|
knowledge=[knowledge],
|
|
)
|
|
|
|
# Create a task
|
|
task = Task(
|
|
description="Explain what AI is",
|
|
expected_output="Explanation of AI",
|
|
agent=agent,
|
|
)
|
|
|
|
# Create a crew
|
|
crew = Crew(
|
|
agents=[agent],
|
|
tasks=[task],
|
|
)
|
|
|
|
# Execute the crew
|
|
result = crew.kickoff()
|
|
```
|
|
|
|
## Configuration Options
|
|
|
|
The Elasticsearch integration supports the following configuration options:
|
|
|
|
- `host`: Elasticsearch host (default: "localhost")
|
|
- `port`: Elasticsearch port (default: 9200)
|
|
- `username`: Elasticsearch username (optional)
|
|
- `password`: Elasticsearch password (optional)
|
|
- Additional keyword arguments are passed directly to the Elasticsearch client
|
|
|
|
## Running Tests
|
|
|
|
To run the Elasticsearch tests, you need to set the `RUN_ELASTICSEARCH_TESTS` environment variable to `true`:
|
|
|
|
```bash
|
|
RUN_ELASTICSEARCH_TESTS=true pytest tests/memory/elasticsearch_storage_test.py tests/knowledge/elasticsearch_knowledge_storage_test.py tests/integration/elasticsearch_integration_test.py
|
|
```
|