核心功能
你是否也受够了AI一本正经地胡说八道?😭 当我们想让大语言模型(LLM)回答基于特定文档或最新数据的问题时,它却常常因为“知识库”没更新而产生幻觉,给出不准确甚至完全错误的答案。这在需要高精准度的开发和业务场景中简直是灾难!
救命稻草来了!今天按头安利一个神仙操作:RAG Implementation Skill。它能帮你构建一套检索增强生成(Retrieval-Augmented Generation)系统,简单来说,就是给你的AI外挂一个专属知识库,让它从此“有据可查”,回答问题精准又可靠。亲测真香!
适用平台
这个Skill简直是为主流AI编程助手量身打造的“最强外挂”!它完美适配 Cursor, GitHub Copilot, Claude Code, OpenAI Codex, Gemini Code Assist, 文心快码, 腾讯云 CodeBuddy, 和 华为云 CodeArts 等工具。通过集成RAG能力,你可以极大地增强这些AI助手的上下文理解能力,让它们从一个“通用型”助手,升级为精通你项目代码和业务文档的“专家型”助手。
实操代码示例
下面是一个使用 LangGraph 和 Pinecone 快速搭建一个RAG应用的极简示例。它清晰地展示了“检索-生成”的工作流,让你对RAG的实现一目了然。
from langgraph.graph import StateGraph, START, ENDnfrom langchain_anthropic import ChatAnthropicnfrom langchain_voyageai import VoyageAIEmbeddingsnfrom langchain_pinecone import PineconeVectorStorenfrom langchain_core.documents import Documentnfrom langchain_core.prompts import ChatPromptTemplatenfrom typing import TypedDictnnclass RAGState(TypedDict):n question: strn context: list[Document]n answer: strnn# 1. 初始化组件nllm = ChatAnthropic(model='claude-3-sonnet-20240229')nembeddings = VoyageAIEmbeddings(model='voyage-2')nvectorstore = PineconeVectorStore(index_name='your-index', embedding=embeddings)nretriever = vectorstore.as_retriever(search_kwargs={'k': 4})nn# 2. 定义RAG提示词模板nrag_prompt = ChatPromptTemplate.from_template(n '''Answer based on the context below. If you cannot answer, say so.nn Context:n {context}nn Question: {question}nn Answer:'''n)nn# 3. 定义图节点nasync def retrieve(state: RAGState) -> RAGState:n 'Retrieve relevant documents.'n docs = await retriever.ainvoke(state['question'])n return {'context': docs}nnasync def generate(state: RAGState) -> RAGState:n 'Generate answer from context.'n context_text = ''.join(doc.page_content for doc in state['context'])n messages = rag_prompt.format_messages(n context=context_text,n question=state['question']n )n response = await llm.ainvoke(messages)n return {'answer': response.content}nn# 4. 构建RAG图nbuilder = StateGraph(RAGState)nbuilder.add_node('retrieve', retrieve)nbuilder.add_node('generate', generate)nbuilder.add_edge(START, 'retrieve')nbuilder.add_edge('retrieve', 'generate')nbuilder.add_edge('generate', END)nnrag_chain = builder.compile()nn# 5. 调用nresult = await rag_chain.ainvoke({'question': 'What are the main features?'})nprint(result['answer'])n
优势分析
相比直接向LLM提问,使用RAG Implementation Skill构建的应用具有碾压性的优势:
-
杜绝幻觉,答案可靠
所有回答都基于你提供的真实、可信的文档,从根本上
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







暂无评论内容