Build rag over sql
how to build rag with sql
实现有以下关键的 3 步:
flowchart TB
s1["1. Convert question to DSL Query: 模型转换用户的输入为 sql"]
s2["2. Execute SQL: 执行 sql 语句"]
s3["3. Answer the question: 模型使用 sql 结果来回答用户的输入"]
s1 --> s2 --> s3
flowchart LR
s1["Question"]
subgraph s2["Optional: SQL Agent"]
direction LR
b1(["LLM"])
b2["Query: select * from a"]
b3[("DB")]
b4(["LLM"])
b1 --> b2 --> b3 --> b4
end
s3["Answer"]
s1 -.-> s2 -.-> s3
那么问题的关键在于如何实现上面的 3 个步骤
use llm
- langchain 使用
create_sql_query_chain
来实现 query -> sql 的转换 - langchain 使用
QuerySQLDatabaseTool
来实现 sql 执行 - 将用户的问题和 sql 执行结果传给 llm 来生成对用户的响应
use agent
- 可以使用
SQLDatabaseToolkit
来实现 rag over sql 的功能