A. 最终效果

240911-基于Ollama的22行代码实现极简交互式RAG问答_Embedding

B. 环境配置

pip install llama-index-embeddings-ollama
pip install llama-index-llms-ollama
pip install llama-index

C. 代码程序

from llama_index.core import VectorStoreIndex, Document, SimpleDirectoryReader,Settings
from llama_index.llms.ollama import Ollama
from llama_index.embeddings.ollama import OllamaEmbedding

# 指定LLM
Settings.llm = Ollama(model="qwen2:7b", request_timeout=60.0)
# 指定 embedding model
Settings.embed_model = OllamaEmbedding(model_name="nomic-embed-text:latest")
## 剩下代码一样
documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(documents)
chat_engine = index.as_chat_engine(chat_mode="condense_question", verbose=True)

mode = 2
if mode==1:
    print(chat_engine.chat("Yann LeCun在Nature上发表的Deep learning这篇论文的主要内容是什么?"))
elif mode == 2:
    while True:
        user_input = input("请输入描述(输入 'exit' 退出):")
        if user_input.lower() == 'exit':
            break
        print(chat_engine.chat(user_input))

D. 配置清单

  • requirements.txt
aiohappyeyeballs==2.4.0
aiohttp==3.10.5
aiosignal==1.3.1
annotated-types==0.7.0
anyio==4.4.0
asttokens==2.4.1
attrs==24.2.0
beautifulsoup4==4.12.3
certifi==2024.8.30
charset-normalizer==3.3.2
click==8.1.7
comm==0.2.2
dataclasses-json==0.6.7
debugpy==1.8.5
decorator==5.1.1
Deprecated==1.2.14
dirtyjson==1.0.8
distro==1.9.0
executing==2.1.0
frozenlist==1.4.1
fsspec==2024.9.0
greenlet==3.1.0
h11==0.14.0
httpcore==1.0.5
httpx==0.27.2
idna==3.8
ipykernel==6.29.5
ipython==8.27.0
jedi==0.19.1
jiter==0.5.0
joblib==1.4.2
jupyter_client==8.6.2
jupyter_core==5.7.2
llama-cloud==0.0.17
llama-index==0.11.8
llama-index-agent-openai==0.3.1
llama-index-cli==0.3.1
llama-index-core==0.11.8
llama-index-embeddings-ollama==0.3.0
llama-index-embeddings-openai==0.2.4
llama-index-indices-managed-llama-cloud==0.3.0
llama-index-legacy==0.9.48.post3
llama-index-llms-ollama==0.3.1
llama-index-llms-openai==0.2.3
llama-index-multi-modal-llms-openai==0.2.0
llama-index-program-openai==0.2.0
llama-index-question-gen-openai==0.2.0
llama-index-readers-file==0.2.1
llama-index-readers-llama-parse==0.3.0
llama-parse==0.5.5
marshmallow==3.22.0
matplotlib-inline==0.1.7
multidict==6.1.0
mypy-extensions==1.0.0
nest-asyncio==1.6.0
networkx==3.3
nltk==3.9.1
numpy==1.26.4
ollama==0.3.3
openai==1.44.1
packaging==24.1
pandas==2.2.2
parso==0.8.4
pexpect==4.9.0
pillow==10.4.0
platformdirs==4.3.2
prompt_toolkit==3.0.47
psutil==6.0.0
ptyprocess==0.7.0
pure_eval==0.2.3
pydantic==2.9.1
pydantic_core==2.23.3
Pygments==2.18.0
pypdf==4.3.1
python-dateutil==2.9.0.post0
pytz==2024.2
PyYAML==6.0.2
pyzmq==26.2.0
regex==2024.7.24
requests==2.32.3
six==1.16.0
sniffio==1.3.1
soupsieve==2.6
SQLAlchemy==2.0.34
stack-data==0.6.3
striprtf==0.0.26
tenacity==8.5.0
tiktoken==0.7.0
tornado==6.4.1
tqdm==4.66.5
traitlets==5.14.3
typing-inspect==0.9.0
typing_extensions==4.12.2
tzdata==2024.1
urllib3==2.2.2
wcwidth==0.2.13
wrapt==1.16.0
yarl==1.11.1

D. 参考文献