-
Notifications
You must be signed in to change notification settings - Fork 2
Description
I was successful installed "pip install "dbgpt[rag]>=0.5.2"", and then run the code of "RAG With AWEL" example, found the Error in "chunks = asyncio.run(content_task.call("What is the AWEL?"))":
'str' object has no attribute 'get' in File "d:\code\DB-GPT\dbgpt\rag\operators\knowledge.py", line 94, in map source = datasource.get("source").
full Error info:
(dbgpt-case) PS D:\code\DB-GPT> & C:/Users/z/.conda/envs/dbgpt-case/python.exe d:/code/DB-GPT/demo.py
Current platform is windows, use avx2 as default cpu architecture
No sentence-transformers model found with name D:\code\DB-GPT\models\text2vec-large-chinese. Creating a new one with mean pooling.
Traceback (most recent call last):
File "d:\code\DB-GPT\demo.py", line 38, in
chunks = asyncio.run(assembler_task.call("https://docs.dbgpt.site/docs/awel/"))
File "C:\Users\z.conda\envs\dbgpt-case\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Users\z.conda\envs\dbgpt-case\lib\asyncio\base_events.py", line 649, in run_until_complete
return future.result()
File "d:\code\DB-GPT\dbgpt\core\awel\operators\base.py", line 283, in call
out_ctx = await self._runner.execute_workflow(
File "d:\code\DB-GPT\dbgpt\core\awel\runner\local_runner.py", line 114, in execute_workflow
await self._execute_node(
File "d:\code\DB-GPT\dbgpt\core\awel\runner\local_runner.py", line 143, in _execute_node
await self._execute_node(
File "d:\code\DB-GPT\dbgpt\core\awel\runner\local_runner.py", line 213, in _execute_node
raise e
File "d:\code\DB-GPT\dbgpt\core\awel\runner\local_runner.py", line 192, in _execute_node
await node._run(dag_ctx, task_ctx.log_id)
File "d:\code\DB-GPT\dbgpt\core\awel\operators\base.py", line 248, in _run
return await self._do_run(dag_ctx)
File "d:\code\DB-GPT\dbgpt\core\awel\operators\common_operator.py", line 186, in _do_run
output: TaskOutput[OUT] = await wrapped_call_data.map(map_function)
File "d:\code\DB-GPT\dbgpt\core\awel\task\task_impl.py", line 126, in map
out = await self._apply_func(map_func)
File "d:\code\DB-GPT\dbgpt\core\awel\task\task_impl.py", line 112, in _apply_func
out = await func(self._data)
File "d:\code\DB-GPT\dbgpt\rag\operators\knowledge.py", line 94, in map
source = datasource.get("source")
AttributeError: 'str' object has no attribute 'get'
It's my code:
import os
os.environ['OPENAI_API_KEY'] = 'xxxxx' #my ds apikey
os.environ['OPENAI_API_BASE'] = 'https://api.deepseek.com/v1'
from dbgpt.rag.embedding import DefaultEmbeddingFactory
embeddings = DefaultEmbeddingFactory.default(r"D:\code\DB-GPT\models\text2vec-large-chinese")
import asyncio
import shutil
from dbgpt.core.awel import DAG
from dbgpt.rag import ChunkParameters
from dbgpt.rag.knowledge import KnowledgeType
from dbgpt.rag.operators import EmbeddingAssemblerOperator, KnowledgeOperator
from dbgpt.storage.vector_store.chroma_store import ChromaStore, ChromaVectorConfig
Delete old vector store directory(/tmp/awel_rag_test_vector_store)
shutil.rmtree("/tmp/awel_rag_test_vector_store", ignore_errors=True)
vector_store = ChromaStore(
vector_store_config=ChromaVectorConfig(
name="test_vstore",
persist_path="/tmp/awel_rag_test_vector_store",
embedding_fn=embeddings
)
)
with DAG("load_knowledge_dag") as knowledge_dag:
# Load knowledge from URL
knowledge_task = KnowledgeOperator(knowledge_type=KnowledgeType.URL.name)
assembler_task = EmbeddingAssemblerOperator(
index_store=vector_store,
chunk_parameters=ChunkParameters(chunk_strategy="CHUNK_BY_SIZE")
)
knowledge_task >> assembler_task
chunks = asyncio.run(assembler_task.call("https://docs.dbgpt.site/docs/awel/"))
print(f"Chunk length: {len(chunks)}")
from dbgpt.core.awel import MapOperator
from dbgpt.rag.operators import EmbeddingRetrieverOperator
with DAG("retriever_dag") as retriever_dag:
retriever_task = EmbeddingRetrieverOperator(
top_k=3,
index_store=vector_store,
)
content_task = MapOperator(lambda cks: "\n".join(c.content for c in cks))
retriever_task >> content_task
chunks = asyncio.run(content_task.call("What is the AWEL?"))
print(chunks)
Could you help me fix the code? Thank you!