在编写代码前,我们先设置好环境:
1.在本地通过Ollama部署llama3模型及文本嵌入模型“nomic-embed-text”
ollama pull llama3
ollama pull nomic-embed-text
安装库
pip install llama-index-llms-ollama
pip install llama-index-embeddings-ollama
2.在MySQL中建立数据库school,表students,数据如下:
3.我们查询家庭地址在柳州的学生信息
#导入库
from llama_index.readers.database import DatabaseReader
from sqlalchemy import create_engine
from llama_index.llms.ollama import Ollama
from llama_index.core.settings import Settings
from llama_index.embeddings.ollama import OllamaEmbedding
#设置模型
Settings.llm=Ollama(model="llama3")
Settings.embed_model=OllamaEmbedding(model_name="nomic-embed-text")
eng=create_engine("mysql+pymysql://root:12345678@localhost:3306/school")
#构建查询数据
reader=DatabaseReader(engine=eng)
docs=reader.load_data(query="SELECT * FROM school.students order by address desc")
from llama_index.core import VectorStoreIndex
index=VectorStoreIndex.from_documents(docs)
#开始查询
q=index.as_query_engine()
print(q.query("列出所有家庭地址是柳州的学生信息。"))
4.结果:
According to the provided information, there is only one student with an address of 柳州:
* id: 7, name: 伍军, age: 17, address: 柳州, sex: 女
只有一条记录,很明显,得不到希望要的结果。需要对代码进行改进。
后事如何,下文分解。