使用openGauss部署LlamaIndex
LlamaIndex(原GPT Index)是一个专为大型语言模型(LLM)应用设计的数据框架。使用LlamaIndex进行开发时,通常需要结合其核心功能与选定的集成插件(plugins)。
openGauss容器化部署
详见容器镜像安装。
LlamaIndex部署
安装依赖
从源码安装依赖:
1. pip install llama-index-vector-stores-opengauss
撰写代码
LlamaIndex可以自定义流程,以下为openGauss配合ollama构成RAG应用的demo: 注意,需要在同目录下新建data文件夹,并在文件夹内存放文档
安装所需依赖:
1. pip install llama-index-llms-ollama
2. pip install llama-index-embeddings-ollama
1. import os
2. from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, StorageContext
3. from llama_index.core import Settings
4. from llama_index.llms.ollama import Ollama
5. from llama_index.embeddings.ollama import OllamaEmbedding
6. from llama_index.vector_stores.openGauss import OpenGaussStore
8. def build_rag_app():
9. vector_store = OpenGaussStore.from_params(
10. database="postgres",
11. host="127.0.0.1",
12. password="xxxxxx",
13. port=8888,
14. user="postgres",
15. table_name="paul_graham_essay",
16. embed_dim=768 # openai embedding dimension
17. )
19. # 2. 创建存储上下文
20. storage_context = StorageContext.from_defaults(vector_store=vector_store)
22. # 3. 加载文档
23. documents = SimpleDirectoryReader("data").load_data()
25. # 4. 创建索引
26. index = VectorStoreIndex.from_documents(
27. documents,
28. storage_context=storage_context,
29. show_progress=True
30. )
32. # 5. 创建查询引擎
33. query_engine = index.as_query_engine(
34. similarity_top_k=3,
35. vector_store_kwargs={
36. "hybrid_search": True,
37. "text_search_config": "english"
38. }
39. )
40. return query_engine
42. if __name__ == "__main__":
43. # 配置本地模型
44. Settings.llm = Ollama(
45. model="llama3:latest",
46. base_url="http://127.0.0.1:11434",
47. request_timeout=300.0,
49. temperature=0.3,
50. top_p=0.9,
51. top_k=40,
53. num_ctx=2048,
54. num_gpu=1,
55. num_thread=8,
57. keep_alive="5m",
58. tfs_z=1.0,
60. headers={
61. "Content-Type": "application/json",
62. "Accept": "application/json",
63. "Connection": "keep-alive"
64. },
66. max_retries=3,
67. retry_delay=5,
69. format="json",
70. stream=False
71. )
73. Settings.embed_model = OllamaEmbedding(
74. model_name="nomic-embed-text:latest",
75. base_url="http://127.0.0.1:11434",
76. ollama_additional_kwargs={
77. "embedding_only": True,
78. "options": {
79. "num_ctx": 2048,
80. "num_gpu": 1,
81. "use_mlock": True
82. }
83. },
84. request_timeout=300,
85. headers={
86. "Content-Type": "application/json",
87. "Accept": "application/json"
88. }
89. )
91. # 初始化RAG应用
92. rag_engine = build_rag_app()
94. # 示例查询
95. query = "作者早餐吃了什么?"
96. response = rag_engine.query(query)
98. print(f"问题:{query}")
99. print(f"回答:{str(response).strip()}")
