Skip to content
LlamaIndex 文档版本 跟随上游 源快照 293d2338 更新于 2026-10-18

本 notebook 介绍将 llama-2 与 LlamaIndex 配合使用的正确设置。具体来说,我们将介绍如何使用向量存储索引。

设置

如果你在 Colab 中打开这个 Notebook,可能需要先安装 LlamaIndex 🦙。

%pip install llama-index-llms-replicate
!pip install llama-index

密钥

import os

os.environ["OPENAI_API_KEY"] = "sk-..."
os.environ["REPLICATE_API_TOKEN"] = "YOUR_REPLICATE_TOKEN"

加载文档,构建 VectorStoreIndex

# Optional logging
# import logging
# import sys

# logging.basicConfig(stream=sys.stdout, level=logging.INFO)
# logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

from IPython.display import Markdown, display
from llama_index.llms.replicate import Replicate
from llama_index.core.llms.llama_utils import (
    messages_to_prompt,
    completion_to_prompt,
)

# The replicate endpoint
LLAMA_13B_V2_CHAT = "a16z-infra/llama13b-v2-chat:df7690f1994d94e96ad9d568eac121aecf50684a0b0963b25a41cc40061269e5"

# inject custom system prompt into llama-2
def custom_completion_to_prompt(completion: str) -> str:
    return completion_to_prompt(
        completion,
        system_prompt=(
            "You are a Q&A assistant. Your goal is to answer questions as "
            "accurately as possible is the instructions and context provided."
        ),
    )

llm = Replicate(
    model=LLAMA_13B_V2_CHAT,
    temperature=0.01,
    # override max tokens since it's interpreted
    # as context window instead of max tokens
    context_window=4096,
    # override completion representation for llama 2
    completion_to_prompt=custom_completion_to_prompt,
    # if using llama 2 for data agents, also override the message representation
    messages_to_prompt=messages_to_prompt,
)
from llama_index.core import Settings

Settings.llm = llm

下载数据

# load documents
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()
index = VectorStoreIndex.from_documents(documents)

查询

# set Logging to DEBUG for more detailed outputs
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
display(Markdown(f"<b>{response}</b>"))

根据所提供的上下文信息,作者成长过程中的活动包括:

1. 写短篇小说,这些小说“很糟糕”,而且“几乎没有什么情节”。 2. 在九年级时使用早期版本的 Fortran 语言在 IBM 1401 计算机上编程。 3. 编写简单游戏、一个预测模型火箭高度的程序,以及为父亲编写文字处理器。 4. 阅读科幻小说,例如 Heinlein 的《The Moon is a Harsh Mistress》,这激发了他从事人工智能工作的兴趣。 5. 住在意大利佛罗伦萨,并穿过城市街道前往学院美术馆。

请注意,这些活动均在文本中提及,并非基于先验知识或假设。

流式支持

query_engine = index.as_query_engine(streaming=True)
response = query_engine.query("What happened at interleaf?")
for token in response.response_gen:
    print(token, end="")
 Based on the context information provided, it appears that the author worked at Interleaf, a company that made software for creating and managing documents. The author mentions that Interleaf was "on the way down" and that the company's Release Engineering group was large compared to the group that actually wrote the software. It is inferred that Interleaf was experiencing financial difficulties and that the author was nervous about money. However, there is no explicit mention of what specifically happened at Interleaf.

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。