| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import pytest
- from lightrag.base import QueryParam
- from lightrag.operate import naive_query
- class _FakeTokenizer:
- def encode(self, content: str) -> list[int]:
- return [ord(ch) for ch in content]
- def decode(self, tokens: list[int]) -> str:
- return "".join(chr(token) for token in tokens)
- class _FakeKVStorage:
- def __init__(self):
- self.global_config = {"enable_llm_cache": True}
- self._store = {}
- async def get_by_id(self, key):
- return self._store.get(key)
- async def upsert(self, entries):
- self._store.update(entries)
- class _FakeChunksVDB:
- cosine_better_than_threshold = 0.0
- async def query(self, *_args, **_kwargs):
- return [
- {
- "id": "chunk-1",
- "content": "LightRAG cache identity test chunk.",
- "file_path": "test.md",
- }
- ]
- def _query_global_config(model: str, llm_func) -> dict:
- return {
- "tokenizer": _FakeTokenizer(),
- "role_llm_funcs": {"query": llm_func},
- "llm_cache_identities": {
- "query": {
- "role": "query",
- "binding": "openai",
- "model": model,
- "host": "https://api.example.com/v1",
- }
- },
- "min_rerank_score": 0.0,
- "max_total_tokens": 4096,
- }
- @pytest.mark.offline
- @pytest.mark.asyncio
- async def test_naive_query_partitions_query_cache_by_llm_identity():
- cache = _FakeKVStorage()
- chunks_vdb = _FakeChunksVDB()
- calls = 0
- async def query_model(*_args, **_kwargs):
- nonlocal calls
- calls += 1
- return f"answer-{calls}"
- param = QueryParam(mode="naive", enable_rerank=False)
- first = await naive_query(
- "same query",
- chunks_vdb,
- param,
- _query_global_config("model-a", query_model),
- hashing_kv=cache,
- )
- second = await naive_query(
- "same query",
- chunks_vdb,
- param,
- _query_global_config("model-b", query_model),
- hashing_kv=cache,
- )
- assert first.content == "answer-1"
- assert second.content == "answer-2"
- assert calls == 2
- assert len(cache._store) == 2
|