001:简单 RAG 入门 lamaIndex 示例千问文件名01_LlamaIndex.pyimport os from llama_index.llms.dashscope import DashScope, DashScopeGenerationModels from llama_index.embeddings.dashscope import DashScopeEmbedding from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings from dotenv import load_dotenv os.environ[USER_AGENT] my-rag-app/1.0 load_dotenv() DATA_DIR ./data # 1. 配置 LLM Settings.llm DashScope( model_nameDashScopeGenerationModels.QWEN_MAX, api_keyos.getenv(DASHSCOPE_API_KEY) ) # 2. 设置嵌入模型 Settings.embed_model DashScopeEmbedding( model_nametext-embedding-v2, api_keyos.getenv(DASHSCOPE_API_KEY), timeout60, # 增加超时时间 max_retries5 # 增加重试次数 ) # 3. 加载与索引 if not os.path.exists(DATA_DIR): print(f错误未找到路径 {DATA_DIR}) else: # 建议直接使用绝对路径避免相对路径带来的困扰 print(正在加载文档...) documents SimpleDirectoryReader(DATA_DIR).load_data() print(正在创建索引此步涉及 Embedding 接口调用...) index VectorStoreIndex.from_documents(documents) # 4. 查询 query_engine index.as_query_engine() print(正在提问...) response query_engine.query(2026春运时间是什么时候) print(fAI 回答结果\n{response})运行方式python 01_LlamaIndex.py运行结果正在加载文档... 正在创建索引此步涉及 Embedding 接口调用... 正在提问... AI 回答结果 2026年春运的时间是从2月2日至3月13日。LangChain 示例DeepSeek文件名02_LangChain_DeepSeek.pyimport os from dotenv import load_dotenv os.environ[USER_AGENT] my-rag-app/1.0 load_dotenv() # 1. 加载数据 from langchain_community.document_loaders import TextLoader # 随便复制一些即时新闻放到 txt 文件中例如https://baike.baidu.com/item/2026%E5%B9%B4%E6%98%A5%E8%BF%90/66941026?fromModulehome_hotspot loader TextLoader( file_pathdata/a.txt, encodingutf-8 # 如果是中文文件确保使用 utf-8 编码 ) docs loader.load() # 2. 文档分块 from langchain_text_splitters import RecursiveCharacterTextSplitter text_splitter RecursiveCharacterTextSplitter(chunk_size1000, chunk_overlap200) all_splits text_splitter.split_documents(docs) # 3. 设置嵌入模型 # 使用本地 HuggingFace 模型推荐免费且稳定可能需要科学网络 from langchain_huggingface import HuggingFaceEmbeddings embeddings HuggingFaceEmbeddings( model_nameBAAI/bge-small-zh-v1.5, # 中文模型 model_kwargs{device: cpu}, encode_kwargs{normalize_embeddings: True} ) # 4. 存到向量数据库中为了方便测试这里使用内存数据库 from langchain_core.vectorstores import InMemoryVectorStore vector_store InMemoryVectorStore(embeddings) vector_store.add_documents(all_splits) # 5. 构建用户查询针对前面的即时新闻提问 question 2026春运时间是什么时候 # 6. 在向量数据库中搜索最相似的文档 retrived_docs vector_store.similarity_search(question, k3) docs_content \n\n.join(doc.page_content for doc in retrived_docs) # 7. 构建提示模板 from langchain_core.prompts import ChatPromptTemplate prompt ChatPromptTemplate.from_template( 基于以下上下文回答问题。如果没有结果就说没有找到对应信息。 上下文: {context} 问题: {question} 回答: ) # 8. 把结果和问题都发给大模型生成答案 from langchain_deepseek import ChatDeepSeek llm ChatDeepSeek( modeldeepseek-chat, # DeepSeek API 支持的模型名称 temperature0.7, # 随机性 max_tokens2048, # 最大输出长度 api_keyos.getenv(DEEPSEEK_API_KEY) # 从环境变量加载API key ) answer llm.invoke(prompt.format(questionquestion, contextdocs_content)) print(answer.content) # 只打印回答内容