Skip to content

Cook Book Error: RAG With AWEL #9

@zhang-zhen-project

Description

@zhang-zhen-project
     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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions